c# - 在方法中创建委托(delegate)类型

标签 c# .net-2.0 delegates

我想在 C# 中创建一个委托(delegate)类型,用于创建匿名方法。

例如:

public void MyMethod(){
   delegate int Sum(int a, int b);

   Sum mySumImplementation=delegate (int a, int b) {return a+b;}

   Console.WriteLine(mySumImplementation(1,1).ToString());
}

不幸的是,我无法使用 .NET 2.0 和 C# 2.0 来完成。

最佳答案

为什么要在方法内创建委托(delegate)类型?在方法之外声明它有什么问题?基本上,您不能这样做 - 您不能在方法中声明类型(任何类型)。

一种替代方法是声明 .NET 3.5 中存在的所有 Func/Action 通用委托(delegate) - 然后您可以这样做:

public void MyMethod(){
    Func<int, int, int> mySumImplementation = 
        delegate (int a, int b) { return a+b; };

    Console.WriteLine(mySumImplementation(1,1).ToString());
}

声明在我的 C#/.NET Versions page 上.

关于c# - 在方法中创建委托(delegate)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359320/

相关文章:

c# - 如何强制继承者在自己实现之前运行某些代码

c# - ClrMD:分析 dotnet 核心应用程序中 .NET 框架进程的转储

C# 匿名类型 foreach 循环,更好的方法吗?

.net-2.0 - 为什么 Log4Net 在我的 Windows 服务中运行如此缓慢?

c# - 如何使用反射设置类型为 List<CustomClass> 的属性

ios - Swift 3 协议(protocol)和委托(delegate)方法?

c# - 委托(delegate) func<in T, TResult> 无法访问属性

c# - iTextsharp、PdfPCell.VerticalAlignment 和 PdfPCell.Horizo​​ntalAlignment

.net - 我该如何解决?错误 : Select is not a member of 'System.Collections.Generic.List(Of String)'

c# - 使用 BeginInvoke 时有没有办法确定执行处理程序的线程?