根据CA1026:不应使用默认参数我不应该使用默认参数。
MSDN 说不要压制消息:
不要禁止来自该规则的警告。
但是,我想知道...如果我包含该方法的 CLSCompliant 变体,我可以禁止显示此消息吗?或者是否有相同方法的两种变体,一种具有所有默认参数,一种为空,会导致问题?
public class Foo
{
public Foo()
: this(0)
{
}
[CLSCompliant(false)]
[SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")]
public Foo(Int32 id = 0)
{
//...
}
}
忽略 MSDN 的建议会是一个好的情况吗?我清楚地将方法(构造函数)标记为CLSCompliant(false)
并提供不采用任何默认值的方法(构造函数)。
附注:这似乎是因为:
编译器在访问托管代码时会忽略 C++ 托管扩展的默认参数值。
...所以,我想知道我是否以这种方式编译会导致问题,因为我现在在技术上拥有 2 个可以采用 0 个参数的构造函数?