2016-11-19 6 views
0

私は単純な問題がありましたが、解決策を見つけることができませんでした:変数が割り当てられているかどうかをチェック

与えられた変数が割り当てられているかどうかチェックできますか?値型の場合

int i; 
// stuff happens 
if (someTest(i)); 
    i = 0; 
Console.Write("now i is assigned for sure") 
+2

nope申し訳ありませんが、nullを使用できますが、nullに割り当てられているかどうかはわかりません。 –

+0

これをプロパティにカプセル化することもできます。 –

+0

プロパティを使用して簡単に – Paparazzi

答えて

4

、変数は常に割り当てられです。そこに何かの値があります。それでも、変数がに割り当てられる前に変数を読み込もうとすると、コンパイラはと表示してエラーを表示します。コードはコンパイルされません。

+0

「エラーをスローする」は誤解を招くことです。コンパイラはエラーを報告します – pm100

+0

@ pm100私はより一般的な英語の意味で「スロー」を意味しましたが、あなたはそれが特定のC#の意味を持つことは間違いありません。これは良いですか? –

0

与えられたフィールドセットを知る必要がある場合、そのフィールドを制御するプロパティを持つことができます。 setterの中でそれを制御することができます。たとえば以下の例では、isSetブールフラグは値が設定されたときに更新されます。別の値に基づいてフラグをリセットする必要がある場合は、セッターに別の条件を追加できます。

private int i; 
private bool isSet; 
public int IProp 
{ 
    get { return i;} 
    set { isSet =true; i=value; } 
} 

// test 
Console.WriteLine("Is Set:" + isSet); 
IProp = 0; 
Console.WriteLine("Is Set:" + isSet); 

//results 
//Is Set:False 
//Is Set:True 
関連する問題