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

book
Локальні та Глобальні Області Видимості

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

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

cs

main

copy
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();
}
}
}
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, буде доступна лише всередині цього блоку. Така змінна має локальну область видимості.

Це гарна вправа для читання коду, щоб подивитися на наступний код і спробувати його зрозуміти:

cs

main

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

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

Select the correct answer

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

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

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

Секція 6. Розділ 8

Запитати АІ

expand
ChatGPT

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

We use cookies to make your experience better!
some-alt