【问题标题】:Write Delegates without messing up the code在不弄乱代码的情况下编写代表
【发布时间】:2014-06-23 06:09:23
【问题描述】:

我正在像这样写代表。

  delegate void MyMethod(string arg1, string arg2);
  MyMethod mm;

我不知道为什么它需要两行来声明一个委托。如果我的班级有 20 名代表,我需要编写 40 行代码。 谁能告诉我用一行代码写这个的方法吗? 提前致谢。

【问题讨论】:

标签: c# delegates


【解决方案1】:

你在这里声明了两个非常不同的东西:

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

了解其中的区别很重要,因为这样您就可以确定何时真正想要声明新的委托类型,以及何时只是想要声明现有委托类型的字段。如果您的类有 20 个委托字段,您几乎肯定不想为每个字段声明一个新类型。如果它们具有相同的签名,您可以使用单一类型...或者更好,只需使用框架类型之一,例如 Action<...>Func<...>

Action<string, string> mm;

void返回类型有Action代表,非void返回类型有Func代表,参数个数不同,都通用表示。查看MSDN了解更多详情。)

【讨论】:

  • 元组之类的类型呢?有人告诉我,它们通常只在原型设计时使用,但在投入生产之前应该封装在一个类中。
  • delegate 和 Func 的性能有区别吗?
  • @YesudassMoses Func 是代表。 Func&lt;T1, T2&gt; 定义为 delegate T2 Func&lt;in T1, out T2&gt;(T1 t)
  • @BjarkeSøgaard:我不确定元组是从哪里来的……它们不是委托类型。
猜你喜欢
  • 1970-01-01
  • 2016-04-02
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 2019-08-17
相关资源
最近更新 更多