C# C 3中的委托和事件提供了哪些新功能?

C# C 3中的委托和事件提供了哪些新功能?,c#,.net,c#-3.0,C#,.net,C# 3.0,我觉得我没有利用.NET3.5及更高版本中提供的代表/活动的所有功能。并且或多或少仍在使用2.0中提供的代理电源。如果您能告诉我现在应该如何使用代表/活动、技巧和捷径,我将不胜感激 谢谢 编辑 Jon建议出版关于这一主题的出版物,为了便于浏览,我在这里发布: 我的一些文章可能与此相关: 我的书《深度C》有一整章专门介绍第5章。不幸的是,这不是免费的: 顺便说一句,我找不到这个问题的副本,但我确实浏览了很多关于这个主题的问题 我的一些相关文章: 我的书,有一整章专门讨论第五章。不幸的是,这不是免费

我觉得我没有利用.NET3.5及更高版本中提供的代表/活动的所有功能。并且或多或少仍在使用2.0中提供的代理电源。如果您能告诉我现在应该如何使用代表/活动、技巧和捷径,我将不胜感激

谢谢

编辑

Jon建议出版关于这一主题的出版物,为了便于浏览,我在这里发布:


我的一些文章可能与此相关:

我的书《深度C》有一整章专门介绍第5章。不幸的是,这不是免费的:


顺便说一句,我找不到这个问题的副本,但我确实浏览了很多关于这个主题的问题

我的一些相关文章:

我的书,有一整章专门讨论第五章。不幸的是,这不是免费的:

总结中的主要变化正如Jared所说,这些是语言的变化-.NET本身除了变得通用之外没有太大变化,而且提供方便的Func和Action委托的框架:

C 2:

方法组转换:

// Old:
button.Click += new EventHandler(HandleClick);
// New:
button.Click += HandleClick;
匿名方法:

button.Click += delegate { Console.WriteLine("Click!"); };
协方差/反方差:

EventHandler generalHandler = LogEvent;
button.Click += generalHandler;
button.KeyPress += generalHandler; // Event type is KeyPressEventHandler
C 3:

Lambda表达式:

button.Click += (sender, args) => Console.WriteLine("Click!");
或者更重要的是:

var people = list.Where(person => person.Name != "Jon")
                 .OrderBy(person => person.Age);

代表根本没有改变2.0->3.5。改变的是他们周围有很多东西

System.Core.dll最终以Func和Action的形式添加了可重用的委托 C和VB通过lambda表达式获得了一点函数的味道。这为语言提供了非常简洁的语法来表示委托操作。C在2.0中有匿名方法,但它们不能与lambda表达式的简洁性相比

list.Where(x => x > 42); LINQ在其基础中公开了一系列纯粹对委托进行操作的API。
所以真正的delegetase并没有改变,只是用途而已。

您是否考虑过使用委托进行快速而肮脏的异步操作?您可以调用BeginInvoke和EndInvoke方法在线程池上执行异步操作

// Definition.
delegate string TransformDelegate(string input);

// Client code.  This is some lengthy operation.  You can also
// assign a function here if you want.
TransformDelegate t = (x) => ...;

// Begin invoking.
t.BeginInvoke("input", (ar) => 
{
    // Call end invoke.
    string result = t.EndInvoke(ar);

    // Dispose of wait handle, known issue documented here.
    // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94068
    using (IDisposable d = ar.WaitHandle) { }

    // Process end result here.  Remember, on another thread now.
}, null);

你是说对我们来说很不幸;好吧,那要看情况了-如果一个挑逗章节最终足以让人买这本书…@Jon Skeet,谢谢,我已经把它们打印出来并阅读了不止一次。。。看着黑暗的角落…黑暗@Jon-一个挑逗性的章节对我来说已经足够了:想详细说明一下方法组转换的“旧/新”区别吗?我不明白,还是恰恰相反?。