前提

当使用带有C#可选参数的代码分析(或fxCop)时,您会收到CA1026警告。简短的原因1并未为所有参数提供默认值。

以下声明正确生成了此警告

public Color GetColor(bool red, bool blue = true, bool green = true)

但是,在某些情况下,您无法为所有参数提供默认值,这就是扩展方法。因此,下面的声明由于第一个参数而生成警告:
public static bool ValidateRules(this string s, Rules rules = Rules.Default)

编译器不允许您在此参数上指定默认值,因此仅有的两种解决方案是:
  • 忽略警告,我不喜欢这样做,因为它会导致不良做法。
  • 不使用扩展方法,我不喜欢这样做,因为我发现扩展方法使代码更易读。

  • 问题
  • 以上两个选项是唯一的
    解决这个问题的方法?
  • 是fxCop/代码
    检查分析不正确?


  • The long reason
  • 最佳答案

    这不是在警告您没有所有参数的默认值,而是在警告您完全使用可选参数。

    我个人将禁用此特定警告。谨慎使用时,我认为可选参数很好。您应该仔细考虑它们,尤其是在默认参数值的版本控制以及不支持它们的语言(包括v4之前的C#)方面,但是在许多环境中,缺点并不是真正的问题,您可以结束比在整个地方指定重载要简单得多。

    09-10 02:12
    查看更多