0

C# クラスで定義された一連のpublic const int変数があり、それらの値も初期化されます。各変数の値が一意でない場合、コンパイラにコンパイラ エラーをスローさせる方法はありますか? 変数間に値の衝突がある場合、プロジェクトをコンパイルしたくありません。

4

3 に答える 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 に答える