入れ子になったループにおける C# 変数のスコープの問題
C# の変数スコープを理解することは、一般的なエラーを回避するために重要です。 変数のスコープは、コード内のどこで変数にアクセスできるかを決定します。潜在的なスコープの問題を強調する 2 つのコード例を調べてみましょう:
例 1:
<code class="language-csharp">public void MyMethod(){ int i=10; for(int x=10; x<20; x++){ int i = x; // Point 1: Error Console.WriteLine(i); } Console.WriteLine(i); // Point 2: Error }</code>
例 2:
<code class="language-csharp">public void MyMethod(){ for(int x=10; x<20; x++){ int i = x; object objX = new object(); Console.WriteLine(i); } for(int y=20; y<30; y++){ int i = y; object objX = new object(); Console.WriteLine(i); } }</code>
エラー分析
例 1 では、内部ループが i
を再宣言し、同じスコープ内に同じ名前の新しい変数を作成するため、コンパイラはポイント 1 にフラグを立てます。これは、指定されたスコープ内で一意の変数名のルールに違反します。 ポイント 2 のエラーは、ループのスコープ内で別の i
が宣言されているループの外側で i
にアクセスしようとしたことが原因で発生します。
解決策
例 2 は正常にコンパイルされます。 2 つのループは個別のスコープを確立します。 各ループの i
変数と objX
変数は別個のエンティティとして扱われ、名前の競合を回避します。各ループは、非表示の中括弧で囲まれているかのように動作し、独自のローカル スコープを作成します。
重要なポイント
C# の変数スコープ ルールでは、指定されたスコープ内で一意の名前を指定し、そのスコープ全体で同じエンティティを一貫して参照することが義務付けられています。 これを理解すると、特に入れ子になったループ内で、例 1 に示したスコープ エラーを防ぐことができます。変数の宣言とスコープを注意深く管理することで、開発者はよりクリーンでエラーのない C# コードを作成できます。
以上がC# が入れ子ループ内の変数スコープ エラーを報告するのはなぜですか?また、それらはどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。