Advertisement
NelloRizzo

Espressioni Lambda

May 4th, 2020
696
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Delegati
  8. {
  9.     class Program
  10.     {
  11.  
  12.         static bool Asc(int x, int y) { return x > y; }
  13.         static bool Desc(int x, int y) { return x < y; }
  14.  
  15.         static void SortAsc(int[] array)
  16.         {
  17.             for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
  18.                 for (var j = i + 1; j < array.Length; ++j)
  19.                     //if (array[i] > array[j])
  20.                     if (Asc(array[i], array[j]))
  21.                     {
  22.                         var temp = array[i];
  23.                         array[i] = array[j];
  24.                         array[j] = temp;
  25.                     }
  26.         }
  27.         static void SortDesc(int[] array)
  28.         {
  29.             for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
  30.                 for (var j = i + 1; j < array.Length; ++j)
  31.                     //if (array[i] < array[j])
  32.                     if (Desc(array[i], array[j]))
  33.                     {
  34.                         var temp = array[i];
  35.                         array[i] = array[j];
  36.                         array[j] = temp;
  37.                     }
  38.         }
  39.  
  40.         delegate bool DecidiSeScambiare(int x, int y);
  41.         static void Sort(int[] array, DecidiSeScambiare decisione)
  42.         {
  43.             for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
  44.                 for (var j = i + 1; j < array.Length; ++j)
  45.                     //if (Desc(array[i], array[j]))
  46.                     if (decisione(array[i], array[j]))
  47.                     {
  48.                         var temp = array[i];
  49.                         array[i] = array[j];
  50.                         array[j] = temp;
  51.                     }
  52.         }
  53.  
  54.         //static bool Strano(int x, int y) { if (x % 2 == 0) return x > y; else return x < y; }
  55.         //static bool Strano(int x, int y) { return (x % 2 == 0) ? x > y : x < y; }
  56.         static bool Strano(int x, int y) => (x % 2 == 0) ? x > y : x < y; // => operatore LAMBDA
  57.         static void Print(int[] array) { foreach (var i in array) Console.WriteLine(i); }
  58.         static void Main(string[] args)
  59.         {
  60.             int[] numeri = { 423, 6345, 124, 98, 1423, 9, 2345, 0869, 5423, 1423, 2746 };
  61.             Console.WriteLine("Array iniziale:"); Print(numeri);
  62.             SortAsc(numeri);
  63.             Console.WriteLine("Array ordinato:"); Print(numeri);
  64.             SortDesc(numeri);
  65.             Console.WriteLine("Array ordinato in senso decrescente:"); Print(numeri);
  66.             Sort(numeri, Asc);
  67.             Console.WriteLine("Array ordinato con delegato Asc:"); Print(numeri);
  68.             Console.WriteLine("Array ordinato con delegato Desc:"); Sort(numeri, Desc); Print(numeri);
  69.             Console.WriteLine("Array ordinato con delegato Strano:"); Sort(numeri, Strano); Print(numeri);
  70.             Console.WriteLine("Array ordinato con delegato LAMBDA:"); Sort(numeri, (a, b) => (a % 2 == 0) ? a > b : a < b); // funzione LAMBDA
  71.             Console.WriteLine("Array ordinato in ordine crescente con delegato LAMBDA:"); Sort(numeri, (a, b) => a > b); // funzione LAMBDA
  72.             Console.WriteLine("Array ordinato in ordine decrescente con delegato LAMBDA:"); Sort(numeri, (a, b) => a < b); // funzione LAMBDA
  73.  
  74.             //int a = (2 < 1) ? 10 : 20; // operatore ternario: se la condizione è vera restituisce il valore che si trova prima di : altrimenti quello che si trova dopo
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement