传递委托参数的最佳方式

时间:2013-09-28 21:19:07

标签: c# delegates

将参数传递给委托的最佳方法是什么?我可以看到以下两种方式的好处,所以我想知道最常用和行业认可的方式:


1)单独传递任何参数,每个参数只是一个参数。

示例代表

public delegate void MyDelegate(bool PARAM1, String PARAM2, int PARAM3);



2)通过结构传递任何参数,委托的唯一参数是结构。

示例结构

public struct MyDelegateArgs
{
    public bool PARAM1;
    public String PARAM2;
    public int PARAM3;
}

示例代表

public delegate void MyDelegate(MyDelegateArgs args);

2 个答案:

答案 0 :(得分:2)

想象一下你的结构有20个属性/字段 - 你真的想要将所有这些作为参数传递吗?通常我会争辩隐藏所有这些复杂性并通过传入类/结构来保留代码DRY - 这在大多数情况下也更具表现力 - 您的委托需要类型为MyDelegateArgs的参数。

我可以提出的唯一一个传递单个值的参数是,如果你只需要一个恰好在MyDelegateArgs中使用的小子集,那么它就是不相关的。

答案 1 :(得分:1)

如果您的委托具有Action<T>Predicate<T>的实用程序,则最好使用struct参数,因为它可以防止签名对于预定义{{{{{{{{当你去扩展委托的签名时,1}}或Action定义。