1. ホーム
  2. c#

[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?

2022-01-20 23:23:38

質問

私のコードは以下の通りです。

int tmpCnt;  
if (name == "Dude")  
   tmpCnt++;  

なぜエラーが発生するのか 未割り当てのローカル変数 tmpCnt" を使用しています。 ?

明示的に初期化していないのは分かっているのですが、以下の原因により 既定値表 で値型が初期化されます。 0 のように、とにかく リファレンスも思い出した。

C#で初期化されていない変数を使用することは禁止されていることを忘れないでください。

しかし、デフォルトですでに行われているのに、なぜ明示的に行わなければならないのでしょうか?その必要がないのなら、パフォーマンスが向上するのでは?

解決方法は?

ローカル変数が初期化されていない。 手動で初期化する必要があります。

メンバー が初期化されるなど。

public class X
{
    private int _tmpCnt; // This WILL initialize to zero
    ...
}

しかし、ローカル変数はそうではありません。

public static void SomeMethod()
{
    int tmpCnt;  // This is not initialized and must be assigned before used.

    ...
}

だから、あなたのコードは、必ず

int tmpCnt = 0;  
if (name == "Dude")  
   tmpCnt++;  

要するに、メンバーは初期化され、ローカルは初期化されないということです。 だから、コンパイラーエラーが発生するのです。