Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Локальні та глобальні області видимості | Розділ
Основи C#

Локальні та глобальні області видимості

Свайпніть щоб показати меню

Область видимості змінної — це частина коду, в якій ми можемо отримати доступ до цієї змінної. У C# існує глобальна область видимості та багато можливих локальних областей видимості.

Коли ми створюємо змінну поза будь-яким методом, до неї можна отримати доступ майже з будь-якої частини програми, тому кажуть, що вона має глобальну область видимості:

main.cs

main.cs

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. Однак це можливо не завжди.

Змінна, оголошена всередині блоку коду, доступна лише всередині цього блоку та будь-яких вкладених блоків коду. Наприклад, змінна, оголошена всередині методу, доступна лише безпосередньо в цьому методі. Аналогічно, змінна, оголошена всередині блоку if, else if або else, доступна лише в межах цього блоку. Така змінна має локальну область видимості.

Перегляньте наступний код і спробуйте зрозуміти, як він працює:

main.cs

main.cs

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); } } }

У наведеному коді є чотири змінні:

  • variable_1 — глобальна область видимості;
  • variable_2 — локальна область видимості, визначена в методі Main;
  • variable_3 — локальна область видимості, визначена в блоці if;
  • variable_4 — локальна область видимості, визначена в методі myMethod.

Наведена програма може взагалі не скомпілюватися, але демонструє, де певні змінні можуть бути доступні, а де ні. Область коду, де змінна може бути доступною, називається областю видимості цієї змінної.

  • variable_1 — глобальна змінна, тому доступна майже всюди;
  • variable_2 доступна в усьому методі Main, включаючи підблоки, такі як умова if;
  • variable_3 доступна лише всередині блоку if;
  • variable_4 доступна лише всередині блоку myMethod.
question mark

Яке ключове слово потрібно використовувати для глобальних змінних (змінних, оголошених поза будь-яким методом)?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 58

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 58
some-alt