C# 変数スコープの詳細な説明: 1 つのコード例はコンパイルされて成功するのに、もう 1 つは変数スコープが原因で失敗するのはなぜですか?
以下では、これら 2 つのコード例のコンパイル結果が異なる原因となる C# 変数のスコープ規則について説明します。
コード例 1: コンパイルに失敗しました
最初のコード例では、for ループ内の変数 i (int i=10; // Point1) の最初の宣言によりコンパイル エラーが発生します。これは、ループを含むメソッド内で変数 i が宣言されているためです。 C# 仕様では、ローカル変数宣言空間内に同じ名前の複数の要素が存在できないと規定されています。
さらに、for ループ外の objX への 2 番目の参照 (var objX = new OtherClassOfMine(); // Point2) もコンパイル エラーを引き起こします。これは、変数 objX が for ループ内で宣言されており、C# 仕様に従って、ネストされたブロックで使用される objX などの単純な名前はブロック内の同じエンティティを参照する必要があるためです。
コード例 2: コンパイル成功
2 番目のコード例では、2 つの for ループがそれぞれのブロック内で変数 i と objX を宣言しています。各ブロックは独自の変数宣言セットを使用するため、変数名やスコープに重複がなく、コードは正常にコンパイルされます。
概要:
コード例 1 は変数宣言スペースの規則に違反しており、同じスコープ内で同じ名前の複数の変数を宣言しています。コード例 2 では、変数を別のブロックで宣言することでこの問題を回避しています。これらのスコープ ルールを理解することは、正しく保守可能な C# コードを作成するために重要です。
以上が変数のスコープが原因で、1 つの C# コード サンプルがコンパイルされるのに他のコード サンプルが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。