我在c#中有委托的示例代码。我想知道可以委托作为类使用,如下例所示:
using System;
// This delegate returns int and takes an int argument.
delegate int CountIt(int end);
class VarCapture {
static CountIt Counter() {
int sum = 0;
// Here, a summation of the count is stored
// in the captured variable sum.
CountIt ctObj = delegate (int end) {
for(int i=0; i <= end; i++) {
Console.WriteLine(i);
sum += i;
}
return sum;
};
return ctObj;
}
static void Main() {
// Get a counter.
CountIt count = Counter();
int result;
result = count(3);
Console.WriteLine("Summation of 3 is " + result);
Console.WriteLine();
result = count(5);
Console.WriteLine("Summation of 5 is " + result);
}
}
答案 0 :(得分:3)
是的,委托类型是类 - 每个具体的委托类型都继承自MulticastDelegate
,您可以传递委托引用,就像您可以传递任何其他类型的引用一样。
CLR,框架和语言可以通过各种方式对它们进行特殊处理,但这些方法除了普通类之外还有额外的功能。
在这种特殊情况下,您使用anonymous method创建委托实例。您可能希望查看lambda expressions,它们通常会替换在惯用C#中使用匿名方法,除非在极少数情况下。