【问题标题】:Two similar overloads? or one overload calling the other?两个类似的重载?还是一个重载调用另一个?
【发布时间】:2015-07-05 10:02:03
【问题描述】:

我有一个函数我想重载以以不同的形式获取相同的数据,即:

void encode(byte[,,],float)

void encode(Bitmap[],float)

我写了一个重载的函数,很长(大约60行)。

我的问题是,在写第二个重载的时候,我是应该把第一个重载的大部分代码复制过来,做一点小改动,还是应该转换数据,调用第一个重载?

【问题讨论】:

标签: c# c#-4.0 overloading


【解决方案1】:

永远不要将你的代码从一个方法复制到另一个方法,这是一个很大的错误。对于重载,您应该创建一个具有大多数参数的方法,而对于其他重载,则调用具有大多数参数和一些默认值的方法。

【讨论】:

    【解决方案2】:

    如果可能,请避免大量重复。

    按照您的建议,一个重载调用另一个重载通常是一种好方法。

    通常也可以很好地将共性分解为两个重载都调用的私有方法。如果需要允许对不同类型进行类似操作,此私有方法可以是通用的。

    虽然有时重复是不可避免的,尤其是在对原始类型进行重载时。即使在这里,看看您是否可以至少考虑一些功能,或者考虑 T4 模板。

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      相关资源
      最近更新 更多