Локальні та Глобальні Області Видимості
Область видимості змінної — це частина коду, в якій ми можемо отримати доступ до цієї змінної. У C# існує глобальна область видимості та багато можливих локальних областей видимості.
Коли ми створюємо змінну поза будь-яким методом, до неї можна отримати доступ майже з будь-якої частини програми, тому кажуть, що вона має глобальну область видимості:
main.cs
1234567891011121314151617181920using 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
123456789101112131415161718192021222324252627282930313233using 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
.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain the difference between global and local scope in more detail?
Can you give an example of when to use a global variable versus a local variable?
What happens if I try to access a variable outside of its scope?
Awesome!
Completion rate improved to 1.59
Локальні та Глобальні Області Видимості
Свайпніть щоб показати меню
Область видимості змінної — це частина коду, в якій ми можемо отримати доступ до цієї змінної. У C# існує глобальна область видимості та багато можливих локальних областей видимості.
Коли ми створюємо змінну поза будь-яким методом, до неї можна отримати доступ майже з будь-якої частини програми, тому кажуть, що вона має глобальну область видимості:
main.cs
1234567891011121314151617181920using 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
123456789101112131415161718192021222324252627282930313233using 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
.
Дякуємо за ваш відгук!