hel*_*ker 3 c# arrays parameter-passing
我正在开发一个数据采集系统,它有一些基于事件的数据流.
通常,有一个NewDataAvailableArgs类,它返回一个或多个新值.
我的疑问是:我应该有两个不同的arg类,如下所示:
class NewManyDataAvailableArgs
{
public IEnumerable<int> Values { get; private set; }
public NewDataAvailableClass(IEnumerable<int> values)
{
values = Values;
}
}
class NewSingleDataAvailableArgs
{
public int Value { get; private set; }
public NewDataAvailableClass(int value)
{
value = Value;
}
}
Run Code Online (Sandbox Code Playgroud)
或者我应该停止担心,只使用一个元素的集合,以防我只有一个值通过?我担心,例如,我最终会提出太多这样的事件,因为构造函数签名是这样的,因此(可能是不必要的)创建一个新数组:
Something.NewDataAvailable(this, new DataAvailable(new int[] { single_value });
Run Code Online (Sandbox Code Playgroud)
我应该更喜欢单一的签名,还是这种"超载"的事件?它是性能,风格还是仅仅是一个偏好问题?
客户是否特别关注这样一个事实:无论有多少元素,他们只会对集合进行处理?如果有消费者会使用它,那么专门的活动只是一个好主意.如果所有消费者都对项目进行了预测并打印出来,那么特殊活动是没有用的.
关于性能,我可以想象单值版本可以节省分配,但架构成本似乎很高.