C# クラスで定義された一連のpublic const int
変数があり、それらの値も初期化されます。各変数の値が一意でない場合、コンパイラにコンパイラ エラーをスローさせる方法はありますか? 変数間に値の衝突がある場合、プロジェクトをコンパイルしたくありません。
質問する
104 次
3 に答える
2
クラスのメンバーを見て、それらに割り当てられた値をチェックするカスタムFx Cop ルールを作成する必要があります。public const int
次に、このルールをコード分析ルールセットに追加し、失敗時に (警告ではなく)エラーに設定できます。
于 2012-10-23T22:12:47.527 に答える
2
switch ステートメントのケースは一意である必要があるためswitch
、他の変数と重複しないようにする変数ごとにケースを含むステートメントを使用できます。
static class ColorSwatches
{
public const int Red = 0, Gray = 1, Blue = 2, Yellow = 3, Grey = 1;
static ColorSwatches()
{
switch (0) {
case Red: break;
case Gray: break;
case Blue: break;
case Yellow: break;
case Grey: break;
}
}
}
残念ながら、これには、すべての定数をswitch
.
(サイドバー: これは C++ でも機能します。C++ が追加される前にコンパイル時のアサーションに使用していstatic_assert
ました。)
于 2012-10-23T22:15:29.143 に答える
0
それらを列挙型で定義します。ゼロから単調に増加させたくない場合でも値を指定できますが、繰り返される値がある場合、コンパイラーは値をバーフします。
于 2012-10-23T23:20:50.050 に答える