ホームページ > バックエンド開発 > C++ > 変数のスコープは C# のコンパイルにどのような影響を与えますか?

変数のスコープは C# のコンパイルにどのような影響を与えますか?

DDD
リリース: 2025-01-12 14:09:44
オリジナル
571 人が閲覧しました

How Does Variable Scope Affect Compilation in C#?

C# の変数スコープの曖昧さ

C# の変数スコープは、特定の言語ルールにより混乱を招く可能性があります。問題を理解するために 2 つのコード例を詳しく見てみましょう:

コード例 1 (コンパイルエラー):

<code class="language-c#">public void MyMethod(){
    int i = 10;

    for(int x = 10; x < 20; x++){
        int i = x; // 编译错误:在此作用域内重复声明变量 'i'
        object objX = new object(); // 编译错误:在此作用域内重复声明变量 'objX'
        object objX = new object();
    }
}</code>
ログイン後にコピー

エラーの理由:

  • ポイント 1: 'i' という名前の 2 つのローカル変数が同じコード ブロック (ループ本体) 内で宣言されています。 C# では、同じスコープ内で同じ名前の重複した宣言は許可されません。
  • ポイント 2: 'objX' という名前の別のローカル変数が、同じ名前の前の変数と同じスコープで宣言されており、C# の "識別規則" に違反しています。このルールは、コード ブロック内では、単純な名前が常に同じエンティティを参照する必要があると規定しています。

コード例 2 (正常にコンパイルされました):

<code class="language-c#">public void MyMethod(){
    for(int x = 10; x < 20; x++){
        int i = x; 
        object objX = new object();
    }
    for(int x = 10; x < 20; x++){
        int i = x;
        object objX = new object();
    }
}</code>
ログイン後にコピー

コンパイルが成功した理由:

コード例 2 では、ループの「暗黙の中括弧」ルールにより、ループ反復ごとに個別のスコープが作成されます。これは次のことを意味します:

  • 「i」という名前の 2 つの変数は異なるスコープ (ループの異なる反復) で宣言されているため、重複した宣言エラーが回避されます。
  • 「objX」という名前の 2 つの変数も異なるスコープで宣言されており、「識別規則」を満たしているため、コンパイルは成功します。

これら 2 つのコード例は、C# における変数スコープの微妙な影響と、それが正しく理解されていない場合に生じる可能性のある混乱を示しています。

以上が変数のスコープは C# のコンパイルにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート