编写代表而不会弄乱代码

Yes*_*ses 1 c# delegates

我正在写这样的代表.

  delegate void MyMethod(string arg1, string arg2);
  MyMethod mm;
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它需要两行来声明一个委托.如果我的班级有20名代表,我需要编写40行代码.任何人都可以告诉我在一行代码中写这个吗?提前致谢.

Jon*_*eet 10

你在这里宣布两件截然不同的事情:

  • 第一行声明了一个名为的委托类型MyMethod
  • 第二行声明该委托类型的字段

理解差异很重要,因为当你真的想要声明一个新的委托类型时,以及当你只想声明一个现有委托类型的字段时,你可以解决这个问题.如果您的类有20个委托字段,那么您几乎肯定不希望为每个字段声明一个新类型.如果他们有相同的签名,你可以使用单一类型......或更好,只需使用其中一种框架类型,如Action<...>Func<...>.

Action<string, string> mm;
Run Code Online (Sandbox Code Playgroud)

(有Action代表的void返回类型,并Func代表了非void返回类型,不同数量的参数,都表示一般.看看MSDN的更多细节.)