将参数传递给委托的最佳方法是什么?我可以看到以下两种方式的好处,所以我想知道最常用和行业认可的方式:
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);
答案 0 :(得分:2)
想象一下你的结构有20个属性/字段 - 你真的想要将所有这些作为参数传递吗?通常我会争辩隐藏所有这些复杂性并通过传入类/结构来保留代码DRY - 这在大多数情况下也更具表现力 - 您的委托需要类型为MyDelegateArgs
的参数。
我可以提出的唯一一个传递单个值的参数是,如果你只需要一个恰好在MyDelegateArgs
中使用的小子集,那么它就是不相关的。
答案 1 :(得分:1)
如果您的委托具有Action<T>
或Predicate<T>
的实用程序,则最好使用struct参数,因为它可以防止签名对于预定义{{{{{{{{当你去扩展委托的签名时,1}}或Action
定义。