C# 變量作用域的實現(xiàn)示例
在 C# 中,變量作用域(Scope) 是指變量在程序中可被訪問的范圍。變量只能在其定義的作用域內(nèi)使用,超出作用域后將無法訪問。
1. 局部變量作用域
局部變量聲明在方法、代碼塊、循環(huán)或條件語句中,只能在當前代碼塊內(nèi)訪問。
class Program
{
static void Main()
{
int a = 10;
if (a > 5)
{
int b = 20;
Console.WriteLine(b); // 正確
}
// Console.WriteLine(b); // 編譯錯誤
}
}2. 方法參數(shù)作用域
方法參數(shù)屬于方法內(nèi)部的局部變量,只能在當前方法內(nèi)使用。
static void Print(int num)
{
Console.WriteLine(num);
}
static void Main()
{
Print(100);
// Console.WriteLine(num); // 編譯錯誤
}3. 代碼塊作用域
由 {} 包圍的區(qū)域形成獨立作用域。
{
int x = 100;
Console.WriteLine(x);
}
// Console.WriteLine(x); // 編譯錯誤4. for 循環(huán)變量作用域
循環(huán)變量僅在循環(huán)體內(nèi)有效。
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
// Console.WriteLine(i); // 編譯錯誤5. 類成員變量作用域(字段)
字段屬于類,可以被類中的所有方法訪問。
class Student
{
private string name = "Tom";
public void Show()
{
Console.WriteLine(name);
}
}訪問修飾符影響范圍
| 修飾符 | 作用域 |
|---|---|
| private | 當前類 |
| protected | 當前類及子類 |
| internal | 當前程序集 |
| public | 所有地方 |
public class User
{
private int age;
protected string name;
internal string address;
public string phone;
}6. 靜態(tài)變量作用域
靜態(tài)變量屬于類本身,而不是對象實例。
class Counter
{
public static int Count = 0;
}
Counter.Count++;
Console.WriteLine(Counter.Count);7. Lambda 表達式閉包作用域
Lambda 可以訪問外部變量。
int num = 10;
Action action = () =>
{
Console.WriteLine(num);
};
action();修改外部變量
int count = 0;
Action add = () =>
{
count++;
};
add();
Console.WriteLine(count); // 18. switch 作用域
不同 case 共用同一個作用域。
? 錯誤示例:
switch (value)
{
case 1:
int num = 10;
break;
case 2:
int num = 20; // 編譯錯誤
break;
}? 正確寫法:
switch (value)
{
case 1:
{
int num = 10;
break;
}
case 2:
{
int num = 20;
break;
}
}9. 變量隱藏(Shadowing)
內(nèi)部作用域變量不能與外部同名。
int age = 20;
{
// int age = 30; // 編譯錯誤
}類字段可被局部變量隱藏:
class User
{
private string name = "Tom";
public void Show()
{
string name = "Jack";
Console.WriteLine(name); // Jack
Console.WriteLine(this.name); // Tom
}
}10. 生命周期與作用域區(qū)別
作用域(Scope)
決定變量在哪里可以訪問。
生命周期(Lifetime)
決定變量在內(nèi)存中存在多久。
void Test()
{
int x = 10;
}- 作用域:
Test()方法內(nèi)部 - 生命周期:方法執(zhí)行期間
靜態(tài)變量:
class Test
{
public static int Count = 0;
}- 作用域:類可訪問范圍
- 生命周期:程序啟動到結束
示例總結
class Program
{
static int globalVar = 100; // 類字段
static void Main()
{
int localVar = 10; // 局部變量
for (int i = 0; i < 3; i++)
{
int loopVar = i;
Console.WriteLine(
$"global={globalVar}, local={localVar}, loop={loopVar}");
}
// Console.WriteLine(loopVar); // 錯誤
}
}作用域?qū)蛹夑P系:
類作用域
└── 方法作用域
└── if作用域
└── for作用域
└── Lambda作用域遵循原則:內(nèi)層作用域可以訪問外層變量,外層作用域不能訪問內(nèi)層變量。
到此這篇關于C# 變量作用域的實現(xiàn)示例的文章就介紹到這了,更多相關C# 變量作用域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
.Net Winform開發(fā)筆記(四)透過現(xiàn)象看本質(zhì)
本文將從Winform應用程序中的Program.cs文件的第一行代碼開始逐步分析一個Winform應用程序到底是怎樣從出生走向死亡2013-01-01

