Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Delegati
- {
- class Program
- {
- static bool Asc(int x, int y) { return x > y; }
- static bool Desc(int x, int y) { return x < y; }
- static void SortAsc(int[] array)
- {
- for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
- for (var j = i + 1; j < array.Length; ++j)
- //if (array[i] > array[j])
- if (Asc(array[i], array[j]))
- {
- var temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- }
- static void SortDesc(int[] array)
- {
- for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
- for (var j = i + 1; j < array.Length; ++j)
- //if (array[i] < array[j])
- if (Desc(array[i], array[j]))
- {
- var temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- }
- delegate bool DecidiSeScambiare(int x, int y);
- static void Sort(int[] array, DecidiSeScambiare decisione)
- {
- for (var i = 0; i < array.Length - 1; ++i)// Type Inference -> il compilatore sceglie il tipo per la variabile "i"
- for (var j = i + 1; j < array.Length; ++j)
- //if (Desc(array[i], array[j]))
- if (decisione(array[i], array[j]))
- {
- var temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- }
- //static bool Strano(int x, int y) { if (x % 2 == 0) return x > y; else return x < y; }
- //static bool Strano(int x, int y) { return (x % 2 == 0) ? x > y : x < y; }
- static bool Strano(int x, int y) => (x % 2 == 0) ? x > y : x < y; // => operatore LAMBDA
- static void Print(int[] array) { foreach (var i in array) Console.WriteLine(i); }
- static void Main(string[] args)
- {
- int[] numeri = { 423, 6345, 124, 98, 1423, 9, 2345, 0869, 5423, 1423, 2746 };
- Console.WriteLine("Array iniziale:"); Print(numeri);
- SortAsc(numeri);
- Console.WriteLine("Array ordinato:"); Print(numeri);
- SortDesc(numeri);
- Console.WriteLine("Array ordinato in senso decrescente:"); Print(numeri);
- Sort(numeri, Asc);
- Console.WriteLine("Array ordinato con delegato Asc:"); Print(numeri);
- Console.WriteLine("Array ordinato con delegato Desc:"); Sort(numeri, Desc); Print(numeri);
- Console.WriteLine("Array ordinato con delegato Strano:"); Sort(numeri, Strano); Print(numeri);
- Console.WriteLine("Array ordinato con delegato LAMBDA:"); Sort(numeri, (a, b) => (a % 2 == 0) ? a > b : a < b); // funzione LAMBDA
- Console.WriteLine("Array ordinato in ordine crescente con delegato LAMBDA:"); Sort(numeri, (a, b) => a > b); // funzione LAMBDA
- Console.WriteLine("Array ordinato in ordine decrescente con delegato LAMBDA:"); Sort(numeri, (a, b) => a < b); // funzione LAMBDA
- //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
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement