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";
这里,str 是一个方法级别的变量。因此,它不能在 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语言