2016-05-08 12 views
0

私はBoolと呼ばれる構造体を持っています。それは1つの&のbool値を表現するだけです(構造体のすべてではなく、私の問題があるところです)。私が到達しようとしていることはこの写真でC#:構造暗黙変換のエラーを作成します。

the kind of error i'm talking about

ある

public struct Bool 
{  
    public static readonly Bool Btrue = 1; 
    public static readonly Bool Bfalse = 0; 
    int value; 

    public Bool(int value) 
    { 
     this.value = value; 
    } 
    public static implicit operator Bool(int x) 
    { 
     if (x == 1) return Btrue; 
     else return Bfalse; 
    } 
} 

私は私にエラーの同じ種類を示すために、他のライン(ブールのC = 2)をしたい(int型Aで= 1.2)は赤い線で表示されます(1.2は整数ではありませんが、私はエラーについて話しています)。

入力値(Bool c = 2)[2を意味する]が1または0でない場合、コードの下に赤い線でエラーが表示されます。

あなたは新しいコンパイラエラーを導入することはできません

+0

サイドノート:このコードはあなたの考え方とはまったく機能しません。 'Btrue'と' Bfalse'の両方は、あなたが設定される前にどちらかを返す暗黙の演算子を使用しているので、値0を持ちます。代わりに、コンストラクタを使用して静的フィールドを初期化します。 – Chris

+0

私はそれが構造体のすべてではないと言ったが、とにかく感謝する –

答えて

0

(可能ならば)私は、例外について知っているが、私はこのエラーは、コンパイルエラーではなく、実行エラーになりたいです。私の提案は、0Falseとし、その他の値はTrueとしています。これは、多くのプログラミング言語で使用されている非常に一般的なアプローチです。

Code ContractsまたはUse Roslyn to Write a Live Code Analyzer for Your APIを使用することもできます。

関連する問題