1

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


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);
4

2 回答 2

2

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

对于传入单个值,我能提出的唯一论点是,如果您只需要一个恰好被使用MyDelegateArgs但在其他方面不相关的小子集。

于 2013-09-28T21:25:58.887 回答
1

如果您的委托具有作为 aAction<T>或 a 的实用程序Predicate<T>,则最好使用 struct 参数,因为它可以防止您在扩展委托签名时遇到签名变得对于预定义Action或定义而言太大的情况。Predicate

于 2013-09-28T21:30:30.240 回答