しらいしさん…

linuxに1000回くらい殺されてるしとりまmicrosoft様をageてくわ

構文スコープで外部変数に代入したい

変数nを用意して、分岐・ループの中でnに違う値を代入して、入った値をスコープ終了後に反映させるようにしたい。
ただ、ここで

switch文なら

var n;

switch(x)
{
 case 1:
 n = 1;
 break;    

 case 2:
 n = 2;
 break;    
}

if文なら

var n;

if(x == 1)
{
 n = 1;
}
else
{
 n = 2;
}

for文なら

var n;
             
for (int i = 0; i < 100; i++)
{
 n = i;
}

という風に初期値を入れずに書いてしまうと、ブロックのどこかを必ず通るようになっていても「未割り当てのローカル変数が使用されました。」のコンパイルエラーになる。
C#の「null参照の危険性がありますよ」的なことを警告してくれる親切心で、対処はブロック侵入前にnに値を代入しておくこと。

var n = null;

if(x == 1)
{
 n = 1;
}
else
{
 n = 2;
}

switch文ならスコープ内にdefaultを入れることでも解決できる

var n;

switch(x)
{
 case 1:
 n = 1;
 break;    

 case 2:
 n = 2;
 break; 

 default:
 n = 0;
 break;  
}

「未割り当てのローカル変数が使用されました。」はよく出るけど、「値が代入されるように記述されていない」か、この構文スコープの問題で発生してることが多いから、慌てずデバッグするんだぞ。