我觉得我没有利用.NET 3.5及更高版本中可用的代理/事件的所有功能.并且或多或少仍然使用2.0中的代表功率.如果你告诉我现在应该如何使用代表/活动,技巧,捷径,我将不胜感激.
谢谢.
编辑
Jon建议他就此主题发表文章,我在这里发帖以便于浏览:
我的一些文章可能是相关的:
活动
C#2.0中的代表
关闭
C#2遭遇困难
C#3受到了影响
我的书,深度的C#,有一整章专门讨论代表(第5章).不幸的是,这不是免费的之一:(
PS.我找不到这个问题的副本,但确实在这个主题上看了很多.
我的一些文章可能是相关的:
活动
C#2.0中的代表
关闭
C#2遭遇困难
C#3受到了影响
我的书,深度的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);