static void Main(string[] args) { string name = "User1"; //Greeting greeting = null; Greeting greeting = new Greeting(Program.Hello); greeting -= Hello; //greeting += Привет; Console.WriteLine(greeting.GetInvocationList()); greeting.Invoke(name); Farewell += Bye; Farewell += Пока; if (Farewell != null) { Farewell(name); } else { Console.WriteLine("I have no one to say goodbye to"); } Console.ReadLine(); }
static void Main(string[] args) { Greeting g = delegate(string name); { return("hi" + name + "very Good Morning"); } string str = g.Invoke("swamy"); Console.WriteLine(str); Console.ReadLine(); }
static void Main(string[] args) { // Greeting a = new Greeting(Hello);// полная запись Greeting a = Hello; // то же самое ,но еороче Console.WriteLine(); Test obj = new Test(); Greeting b = obj.Hi; a.Invoke(); // полная запись b(); // то же самое, но короче Console.WriteLine(); Greeting c; obj.SetDlg(out c); // присвоение вдреса приватного метода c(); Console.WriteLine(); a += b; a += c; a(); Console.WriteLine(); Calc calc = MyClac.Sub; MyClac clc = new MyClac(); calc += clc.Div; calc += clc.Mult; calc += clc.Sum; Console.WriteLine(calc(12, 2)); // вызовет последний добавленый метод (не стоит юзать) Console.WriteLine(); foreach (Calc item in calc.GetInvocationList()) { Console.WriteLine(item(12, 2)); } /* * Console.WriteLine(); * foreach (var item in calc.GetInvocationList()) * { * Console.WriteLine(item.DynamicInvoke(12, 2)); // медленее , и проверки на этапе компиляции , в 10 дольше , лучше не юзать * } */ Console.WriteLine(); Random rnd = new Random(); List <int> lst = new List <int>(); for (int i = 0; i < 50; i++) { lst.Add(rnd.Next(10, 2000)); } lst.Sort(Comparer); // принимает адресс ф-и сравнения foreach (var item in lst) { Console.Write($"{item} "); } Console.WriteLine("\n\n"); var lst_str = lst.ConvertAll(ConvertToString); // принимает адрес ф-и конвертирования обьекта foreach (var item in lst_str) { Console.Write($"{item} "); } Console.WriteLine("\n\n"); lst.Sort(delegate(int num1, int num2) { return(num1 + num2); }); // анонимная ф-я , чтобы не писать кучу ф-й , хуже чем лямбды Console.WriteLine(); lst.Sort((v1, v2) => v1 - v2); // лямбда ф-я ,короче анонимок var lst_str_new = lst.ConvertAll(x => x.ToString()); //var lst_str_select = lst.Select(ls => ls.ToString()).ToList(); // аналог ,но работает с любыми данными var lst_str_select = lst.Select(ls => { if (ls % 2 == 0) { return(ls + 1); } return(ls); }); // если не парное чилос ,возвращает его +1 ,если парное - просто возвращает Console.WriteLine(); var res = from x in lst where x % 2 == 0 select x; // linq запросы ,похожы на sql (хранит запрос,каждый раз его выполняет) foreach (var item in res) { Console.Write($"{item} "); } Console.WriteLine("\n\n"); var res_copy = (from x in lst where x % 2 == 0 select x).ToList(); // создает копию того ,что выдаст запрос var res_lst = lst.Where(var1 => var1 % 2 == 0); // то же что linq запрос выше с возвратом четных чисел Console.WriteLine("\n\n"); string poem = "asd asda sa ag "; Console.WriteLine(poem.WordsCoutner()); // использование раширеного метода для строки Console.WriteLine(lst.Sum()); // на самом деле это linq запрос Console.WriteLine("\n\n"); var res00 = from x in lst let tmp = lst.Average() where x < tmp select x; // linq запрос в мануальном запросе , выводит элемменты которые меньше среднего размера еллемента foreach (var item in res00) { Console.Write($"{item} "); } Console.WriteLine("\n\n"); Console.WriteLine(res00.Aggregate((x, y) => x + y)); // возвращает одно значение ,резульимрующее всех Console.WriteLine("\n\n"); foreach (var item in lst) { Console.Write($"{item} "); } // разбиение массива многозначных чисел , на массив одозначных чисел ("123"=>'1','2','3') var ciphers = lst.Select(x => x.ToString()).Aggregate((x, y) => x + y).Select(x => int.Parse(x.ToString())); // приобразуем цифры в строки ,потом строки в большую строку , потом парсит каждый чар преобразуется в число и ложится в новый массив Console.WriteLine("\n\ncIphers"); foreach (var item in ciphers) { Console.Write($"{item} "); } Console.WriteLine("\n\n"); News news = new News(); Subscriber sub1 = new Subscriber { Name = "Ivan" }; Subscriber sub2 = new Subscriber { Name = "Petro" }; Subscriber sub3 = new Subscriber { Name = "Luda" }; Subscriber sub4 = new Subscriber { Name = "Mila" }; news.Notification += sub1.GetNotification; news.Notification += sub2.GetNotification; news.Notification += sub3.GetNotification; news.Notification += sub4.GetNotification; news.Notification += (s, e) => (Console.WriteLine("NOtification"); );