Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ローカルスコープとグローバルスコープ | メソッド
C#の基礎

bookローカルスコープとグローバルスコープ

メニューを表示するにはスワイプしてください

変数のスコープとは、その変数にアクセスできるコードの範囲を指します。C# では、グローバルスコープと複数のローカルスコープが存在します。

メソッドの外で変数を作成すると、その変数はプログラムのほぼどこからでもアクセスできるため、グローバルスコープを持つといいます。

main.cs

main.cs

copy
1234567891011121314151617181920
using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }

注意

変数をメソッドの外で宣言する場合、宣言の前に static キーワードを付けることが重要です。

上記の例では、myVariable メソッドと Main の両方で変数 testMethod にアクセスしています。ただし、これは常に可能とは限りません。

コードブロック内で宣言された変数は、そのブロックおよび含まれるサブコードブロック内でのみアクセス可能です。たとえば、メソッド内で宣言された変数は、そのメソッド内でのみ直接アクセスできます。同様に、ifelse if、または else ブロック内で宣言された変数も、そのブロック内でのみアクセス可能です。このような変数はローカルスコープを持つといいます。

次のコードを確認し、その動作を理解してみてください。

main.cs

main.cs

copy
123456789101112131415161718192021222324252627282930313233
using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }

上記のコードには4つの変数があります:

  • variable_1 - グローバルスコープ;
  • variable_2 - ローカルスコープ、Mainメソッド内で定義;
  • variable_3 - ローカルスコープ、ifブロック内で定義;
  • variable_4 - ローカルスコープ、myMethodメソッド内で定義。

このプログラムは必ずしもコンパイルできるとは限りませんが、各変数がどこでアクセス可能か、またどこでアクセスできないかを示しています。変数がアクセスできるコード領域を、その変数のスコープと呼びます。

  • variable_1 はグローバル変数なので、ほぼすべての場所でアクセス可能;
  • variable_2Main メソッド全体でアクセス可能で、if 条件などのサブブロックも含みます;
  • variable_3if ブロック内のみでアクセス可能;
  • variable_4myMethod ブロック内のみでアクセス可能;
question mark

グローバル変数(メソッド外で宣言された変数)に使用する必要があるキーワードはどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 6.  8

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 6.  8
some-alt