我想知道在 C# 中是否有像 AS3 中那样的函数类型。我想做这样的事情(但在 C# 中):
private function doSomething():void {
// statements
}
var f:Function = doSomething
f()
最佳答案
是的,它们在 .NET 中称为委托(delegate),而不是函数类型。
您使用保留关键字delegate
定义新的,类库中预定义了很多。
要定义一个与您的示例匹配的:
public delegate void DoSomethingDelegate(Object param1, Object param2);
然后分配它:
DoSomethingDelegate f = DoSomething;
f(new Object(), new Object());
在基类库中还定义了两种通用类型的委托(delegate)类型,一种用于返回值的方法,一种用于不返回值的方法,它们随参数的数量而变化。
这两个是Func<..>
对于返回值的方法,以及 Action<..>
对于没有的方法。
在您的情况下,这会起作用:
Action<Object, Object> f = DoSomething;
f(new Object(), new Object());
请注意,在最后一种情况下,您不必声明 DoSomethingDelegate
.
关于c# - C# 中有函数类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313297/