工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C# 変数のスコープ

C# 変数のスコープ

このチュートリアルでは、例を使用して C# の変数スコープについて学習します。

変数のスコープは、コードの特定の部分で変数を使用できるかどうかを示します。

C# では、変数には 3 種類のスコープがあります。


C# クラス レベル変数のスコープ

C# では、クラス内で変数を宣言すると、クラス内で変数にアクセスできます。これは、クラス レベルの変数スコープと呼ばれます .

クラス レベルの変数はフィールドと呼ばれ、クラスのメソッド、コンストラクタ、およびブロックの外で宣言されます。たとえば、

using System;
namespace VariableScope {
  class Program {

    // class level variable
    string str = "Class Level";

    public void display() {
      Console.WriteLine(str);
    }

    static void Main(string[] args) {
      Program ps = new Program();
      ps.display();

      Console.ReadLine();
    }
  }
}

出力

Class Level

上記の例では、str という名前の変数を初期化しました。 プログラム内 クラス。

これはクラス レベルの変数であるため、クラス内に存在するメソッドからアクセスできます。

public void display() {
  Console.WriteLine(str);
}

これは、クラス全体でクラス レベル変数にアクセスできるためです。

注意 :静的メソッドを介してクラス レベル変数にアクセスすることはできません。たとえば、Program 内に静的メソッドがあるとします。 クラス。

static void display2() {

  // Access class level variable
  // Cause an Error
  Console.WriteLine(str);
}

メソッド レベル変数のスコープ

メソッド内で変数を宣言すると、その変数はメソッドの外ではアクセスできません。これは、メソッド レベル変数のスコープと呼ばれます .たとえば、

using System;

namespace VariableScope {
  class Program {

    public void method1() {
      // display variable inside method
      string str = "method level";
    }

    public void method2() {

      // accessing str from method2()
      Console.WriteLine(str);
    }

    static void Main(string[] args) {
      Program ps = new Program();
      ps.method2();

      Console.ReadLine();
    }
  }
}

上記の例では、str という名前の変数を作成しました。 method1() 内 .

// Inside method1()
string str = "method level";

ここで、str メソッドレベルの変数です。したがって、method1() の外ではアクセスできません。 .

ただし、 str にアクセスしようとすると method2() からの変数

// Inside method2
Console.WriteLine(str);  // Error code

エラーが発生します。

Error   CS0103     The name 'str' does not exist in the current context  

これは、メソッド レベルの変数は、それらが作成されたメソッド内にスコープがあるためです。たとえば、

using System;
namespace VariableScope {
  class Program {

    public void display() {
     string str = "inside method";

      // accessing method level variable
      Console.WriteLine(str);
    }

    static void Main(string[] args) {
    Program ps = new Program();
    ps.display();

    Console.ReadLine();
    }
  }
}

出力

inside method

ここで、 str を作成しました 変数にアクセスし、同じメソッド display() 内でアクセスしました .したがって、コードはエラーなしで実行されます。


C# のブロック レベル変数のスコープ

ブロック内で変数を宣言すると (for ループ、while ループ、if..else)、変数はブロック内でのみアクセスできます。これは、ブロック レベル変数のスコープと呼ばれます .たとえば、

using System;

namespace VariableScope {
  class Program {
    public void display() {

      for(int i=0;i<=3;i++) {
        	 
      }
    Console.WriteLine(i);
    }

    static void Main(string[] args) {
      Program ps = new Program();
      ps.display();

      Console.ReadLine();
    }
  }
}

上記のプログラムでは、ブロック レベル変数 i を初期化しました。 for の中 ループ。

for(int i=0;i<=3;i++) {
       	 
}

以来 for の外で変数にアクセスしようとすると、ブロック レベルの変数になります。 ループ、

// Outside for loop
Console.WriteLine(i);

エラーが発生します。

Error	 CS0103  The name 'i' does not exist in the current context

C言語

  1. Python グローバル キーワード
  2. C++ ポインタと例
  3. C 変数、データ型、定数
  4. Verilog 割り当て
  5. ゲートレベルモデリング
  6. Verilog タイムスケール スコープ
  7. Java - 変数の型
  8. C - 変数
  9. C - スコープ ルール
  10. C - ポインター
  11. C - 可変引数