委托的这种用法是什么意思?

时间:2016-06-15 07:56:18

标签: c# asp.net-mvc delegates

我无法理解为何使用委托:

List<string> temp_list = new List<string>();
string[] temp_array;
temp_array = Array.ConvertAll(arr_DL[m], delegate (int j) { return j.ToString(); });
temp_list.AddRange(temp_array.ToList());

代码应该将数组转换为列表。 有人可以在这里帮助解释代表的使用吗?

2 个答案:

答案 0 :(得分:1)

这是因为它是ConvertAll方法的第二个参数。它表示初始Array中每个元素应如何转换:

  

转换器&lt; TInput,TOutput&gt;将每个元素从一种类型转换为另一种类型。

因此,您的代表sais&#34;通过执行int&#34;

将每个j string转换为j.ToString();

答案 1 :(得分:1)

这部分:

delegate (int j) { return j.ToString(); }

创建所谓的“匿名方法”作为第二个参数TOutput,用于将int变量输入转换为String,然后将其传递给Array.ConvertAll()方法。在C#2.0上广泛使用的匿名方法,在C#3.0中,它们用lambda表达式代替:

delegate String output (int j);
String output = x => { x.ToString(); }

参考:https://msdn.microsoft.com/en-us/library/bb882516.aspx

CMIIW。