Область видимости переменной C#
Область действия переменной C#
В этом руководстве вы узнаете об области видимости переменных в C# с помощью примеров.
Область действия переменных относится к доступности переменных в определенных частях кода.
В C# переменная имеет три типа области видимости:
- Область уровня класса
- Область уровня метода
- Область уровня блока
Область действия переменной уровня класса C#
В C#, когда мы объявляем переменную внутри класса, к этой переменной можно получить доступ внутри класса. Это называется областью действия переменной уровня класса. .
Переменные уровня класса называются полями и объявляются вне методов, конструкторов и блоков класса. Например,
using System;
namespace VariableScope {
class Program {
// class level variable
string str = "Class Level";
public void display() {
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Вывод
Class Level
В приведенном выше примере мы инициализировали переменную с именем str. внутри Программы класс.
Поскольку это переменная уровня класса, мы можем получить к ней доступ из метода, присутствующего внутри класса.
public void display() {
Console.WriteLine(str);
}
Это связано с тем, что переменная уровня класса доступна во всем классе.
Примечание :мы не можем получить доступ к переменной уровня класса через статические методы. Например, предположим, что у нас есть статический метод внутри Program. класс.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
<час> Область действия переменной уровня метода
Когда мы объявляем переменную внутри метода, доступ к этой переменной вне метода невозможен. Это известно как область действия переменной уровня метода. . Например,
using System;
namespace VariableScope {
class Program {
public void method1() {
// display variable inside method
string str = "method level";
}
public void method2() {
// accessing str from method2()
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.method2();
Console.ReadLine();
}
}
}
В приведенном выше примере мы создали переменную с именем str. внутри method1()
.
// Inside method1()
string str = "method level";
Здесь ул является переменной уровня метода. Таким образом, к нему нельзя получить доступ за пределами method1()
.
Однако, когда мы пытаемся получить доступ к str
переменная из method2()
// Inside method2
Console.WriteLine(str); // Error code
получаем ошибку.
Error CS0103 The name 'str' does not exist in the current context
Это связано с тем, что переменные уровня метода имеют область действия внутри метода, в котором они созданы. Например,
using System;
namespace VariableScope {
class Program {
public void display() {
string str = "inside method";
// accessing method level variable
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Вывод
inside method
Здесь мы создали str переменная и обращалась к ней одним и тем же методом display()
. Следовательно, код работает без ошибок.
Область действия переменной уровня блока в C#
Когда мы объявляем переменную внутри блока (цикл for, цикл while, if..else), доступ к переменной возможен только внутри блока. Это известно как область действия переменной на уровне блока. . Например,
using System;
namespace VariableScope {
class Program {
public void display() {
for(int i=0;i<=3;i++) {
}
Console.WriteLine(i);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
В приведенной выше программе мы инициализировали переменную уровня блока i
. внутри for
петля.
for(int i=0;i<=3;i++) {
}
Поскольку i является переменной уровня блока, когда мы пытаемся получить доступ к переменной вне for петля,
// Outside for loop
Console.WriteLine(i);
получаем ошибку.
Error CS0103 The name 'i' does not exist in the current context
Язык C