Зміст курсу
Основи C#
Основи C#
Локальні та Глобальні Області Видимості
Область видимості змінної - це частина коду, де ми можемо отримати доступ до цієї змінної. У C# існує глобальна область видимості та багато можливих локальних областей.
Коли ми створюємо змінну поза будь-яким методом, до неї можна отримати доступ майже з будь-якого місця в програмі, тому вважається, що вона має глобальну область видимості. Наприклад:
main
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
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
;
Дякуємо за ваш відгук!