c# - 委托(delegate)们需要什么?

标签 c# delegates anonymous-methods

我不确定是否有人问过同样的问题。但是我找不到任何与我的疑问相关的消息来源。

委托(delegate)人在实时编程中的需求是什么?需要执行很多步骤才能实现它。

public delegate void SimpleDelegate();
  class TestDelegate
    {
        public static void MyFunc()
        {
            Console.WriteLine("I was called by delegate ...");
        }
        public static void Main()
        {
            // Instantiation
            SimpleDelegate simpleDelegate = new SimpleDelegate(MyFunc);

            // Invocation
            simpleDelegate();
        }
    }

如果可重用性是使用委托(delegate)的主要原因(因为不需要创建实例),这也可以通过其他方式实现。或者这是使用委托(delegate)的唯一优势?我知道匿名方法比委托(delegate)做得更好。但是除了简化步骤之外,它是否提供了除委托(delegate)之外的任何东西。以及当结构如下所示时我如何重用匿名方法。

List<int> values = new List<int>() { 1, 1, 1, 2, 3 };
List<int> res = values.FindAll(delegate(int element)
    {
        if (element > 10)
        {
        throw new ArgumentException("element");
        }
        if (element == 8)
        {
        throw new ArgumentException("element");
        }
        return element > 1;
    });

我很困惑。请阐明这一点。

最佳答案

委托(delegate)提供对方法的完全类型化和安全引用。现在有了通用事件处理程序、ActionFunc 和 lambda,我个人不记得上次显式创建委托(delegate)是什么时候了。

它们仍然在引擎盖下的各个地方使用,但就日常编程而言,它们几乎已经成为历史。代理存在于版本 1 中。Lambda 和其他选项出现得晚得多。

关于c# - 委托(delegate)们需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001027/

相关文章:

ios - 表重新加载无法从 textFieldShouldEndEditing 委托(delegate)方法工作

c# - 在 C# 中将匿名方法/函数作为参数传递

c# - 使用 ApplicationUser 时创建数据库时 MVC5 Entity Framework 代码优先错误

c# - 如何在 Umbraco 7 后台显示用户提交的数据?

c# - 委托(delegate)指向什么?

ios - 如何为 URLSessionDataTask 分配委托(delegate)?

时间:2019-06-10 标签:c#inline switch in format string

c# - 为什么我不能使用这样的匿名方法?

c# - Tizen.NET 调试错误无法加载文件或程序集'Samsung.Sap

c# - 如何使用 C# 在远程 Windows 计算机上创建共享文件夹?