CA1026によると: 既定のパラメーターを使用しないでください。既定のパラメーターを使用することは想定されていません。
MSDN は、メッセージを抑制しないように言っています。
このルールからの警告を抑制しないでください。
ただし、メソッドの CLSCompliant バリエーションを含めると、このメッセージを抑制できますか? または、同じメソッドの 2 つのバリエーションがあり、1 つはすべてデフォルトのパラメーターで、もう 1 つは空で、問題が発生しますか?
public class Foo
{
public Foo()
: this(0)
{
}
[CLSCompliant(false)]
[SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")]
public Foo(Int32 id = 0)
{
//...
}
}
MSDN の提案を無視しても問題ないでしょうか? メソッド (コンストラクター) を明確にマークし、CLSCompliant(false)
デフォルト値を取らないメソッド (コンストラクター) を提供しています。
補足:これは次の理由で適切に行われているようです。
コンパイラは、マネージ コードにアクセスするときに、C++ のマネージ拡張の既定のパラメーターの値を無視します。
...だから、この方法でコンパイルすると問題が発生するのだろうか?