gpt4 book ai didi

c# - CA1026(所有参数都应该有默认值)和扩展方法

转载 作者:IT王子 更新时间:2023-10-29 04:42:22 27 4
gpt4 key购买 nike

前提

使用带有 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)

编译器不会让您为 this 参数指定默认值,因此仅有的两个解决方案是:

  1. 忽略警告,我不喜欢这样做,因为它会导致不良做法。
  2. 不使用扩展方法,我不喜欢这样做,因为我发现扩展方法使代码更易读。

问题

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

  1. The long reason

最佳答案

它不会警告您所有 参数没有默认值 - 它警告您根本 使用可选参数。

我个人会禁用此特定警告。谨慎使用时,我认为可选参数很好。您应该仔细考虑它们,特别是在不支持它们的语言(包括 v4 之前的 C#)中默认参数值 的版本控制方面,但在许多环境中,缺点确实不是一个问题 - 与在各处指定重载相比,您最终得到的代码要简单得多。

关于c# - CA1026(所有参数都应该有默认值)和扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com