CLR Via CSharp----------Delegate&Lambda
8465 ワード
CLR Via CSharp----------Delegate&Lambda
1. There are some simple samples of how to use the delegate.
2. There are much better practices.
1. There are some simple samples of how to use the delegate.
1 class Program
2 {
3 static void Main(string[] args)
4 {
5
6 String[] names = { };
7
8 Counter(1, 3, null);
9 Counter(1, 4, Conso);
10 Counter(1, 4, Mess);
11
12 Program p = new Program();
13 Counter(1, 4, new FeedBack(p.Conso2));
14
15 FeedBack f1 = new FeedBack(Conso);
16 FeedBack f2 = new FeedBack(Mess);
17
18 FeedBack f = null;
19 f += f1;
20 f += f2;
21 Counter(1, 30, f);
22 }
23
24 private static void Counter(int from, int to, FeedBack fb)
25 {
26 for (int i = from; i < to; i++)
27 if (fb != null)
28 fb(i);
29 }
30
31 private static void Conso(int value)
32 {
33 Console.WriteLine("Item=" + value.ToString());
34 }
35
36 private void Conso2(int value)
37 {
38 Console.WriteLine("Item=" + value.ToString());
39 }
40
41 private static void Mess(int value)
42 {
43 MessageBox.Show("Item=" + value.ToString());
44 }
45
46 private void Mess2(int value)
47 {
48 MessageBox.Show("Item=" + value.ToString());
49 }
50 }
2. There are much better practices.
1 String[] names = { "Jeff", "Kristin", "Aidan", "Grant", "HaifengCai" };
2 Char charToEnd = 'a';
3 names = Array.FindAll(names, name => name.IndexOf(charToEnd) >= 0);
4 names = Array.ConvertAll(names, name => name.ToUpper());
5 Array.ForEach(names, Console.WriteLine);