C# 變量作用域的實(shí)現(xiàn)示例
在 C# 中,變量作用域(Scope) 是指變量在程序中可被訪問(wèn)的范圍。變量只能在其定義的作用域內(nèi)使用,超出作用域后將無(wú)法訪問(wèn)。
1. 局部變量作用域
局部變量聲明在方法、代碼塊、循環(huán)或條件語(yǔ)句中,只能在當(dāng)前代碼塊內(nèi)訪問(wèn)。
class Program
{
static void Main()
{
int a = 10;
if (a > 5)
{
int b = 20;
Console.WriteLine(b); // 正確
}
// Console.WriteLine(b); // 編譯錯(cuò)誤
}
}2. 方法參數(shù)作用域
方法參數(shù)屬于方法內(nèi)部的局部變量,只能在當(dāng)前方法內(nèi)使用。
static void Print(int num)
{
Console.WriteLine(num);
}
static void Main()
{
Print(100);
// Console.WriteLine(num); // 編譯錯(cuò)誤
}3. 代碼塊作用域
由 {} 包圍的區(qū)域形成獨(dú)立作用域。
{
int x = 100;
Console.WriteLine(x);
}
// Console.WriteLine(x); // 編譯錯(cuò)誤4. for 循環(huán)變量作用域
循環(huán)變量?jī)H在循環(huán)體內(nèi)有效。
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
// Console.WriteLine(i); // 編譯錯(cuò)誤5. 類(lèi)成員變量作用域(字段)
字段屬于類(lèi),可以被類(lèi)中的所有方法訪問(wèn)。
class Student
{
private string name = "Tom";
public void Show()
{
Console.WriteLine(name);
}
}訪問(wèn)修飾符影響范圍
| 修飾符 | 作用域 |
|---|---|
| private | 當(dāng)前類(lèi) |
| protected | 當(dāng)前類(lèi)及子類(lèi) |
| internal | 當(dāng)前程序集 |
| public | 所有地方 |
public class User
{
private int age;
protected string name;
internal string address;
public string phone;
}6. 靜態(tài)變量作用域
靜態(tài)變量屬于類(lèi)本身,而不是對(duì)象實(shí)例。
class Counter
{
public static int Count = 0;
}
Counter.Count++;
Console.WriteLine(Counter.Count);7. Lambda 表達(dá)式閉包作用域
Lambda 可以訪問(wèn)外部變量。
int num = 10;
Action action = () =>
{
Console.WriteLine(num);
};
action();修改外部變量
int count = 0;
Action add = () =>
{
count++;
};
add();
Console.WriteLine(count); // 18. switch 作用域
不同 case 共用同一個(gè)作用域。
? 錯(cuò)誤示例:
switch (value)
{
case 1:
int num = 10;
break;
case 2:
int num = 20; // 編譯錯(cuò)誤
break;
}? 正確寫(xiě)法:
switch (value)
{
case 1:
{
int num = 10;
break;
}
case 2:
{
int num = 20;
break;
}
}9. 變量隱藏(Shadowing)
內(nèi)部作用域變量不能與外部同名。
int age = 20;
{
// int age = 30; // 編譯錯(cuò)誤
}類(lèi)字段可被局部變量隱藏:
class User
{
private string name = "Tom";
public void Show()
{
string name = "Jack";
Console.WriteLine(name); // Jack
Console.WriteLine(this.name); // Tom
}
}10. 生命周期與作用域區(qū)別
作用域(Scope)
決定變量在哪里可以訪問(wèn)。
生命周期(Lifetime)
決定變量在內(nèi)存中存在多久。
void Test()
{
int x = 10;
}- 作用域:
Test()方法內(nèi)部 - 生命周期:方法執(zhí)行期間
靜態(tài)變量:
class Test
{
public static int Count = 0;
}- 作用域:類(lèi)可訪問(wèn)范圍
- 生命周期:程序啟動(dòng)到結(jié)束
示例總結(jié)
class Program
{
static int globalVar = 100; // 類(lèi)字段
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); // 錯(cuò)誤
}
}作用域?qū)蛹?jí)關(guān)系:
類(lèi)作用域
└── 方法作用域
└── if作用域
└── for作用域
└── Lambda作用域遵循原則:內(nèi)層作用域可以訪問(wèn)外層變量,外層作用域不能訪問(wèn)內(nèi)層變量。
到此這篇關(guān)于C# 變量作用域的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# 變量作用域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.Net Winform開(kāi)發(fā)筆記(四)透過(guò)現(xiàn)象看本質(zhì)
本文將從Winform應(yīng)用程序中的Program.cs文件的第一行代碼開(kāi)始逐步分析一個(gè)Winform應(yīng)用程序到底是怎樣從出生走向死亡2013-01-01
解析錯(cuò)誤富文本json字符串(帶雙引號(hào))的快速解決方法
下面小編就為大家?guī)?lái)一篇解析錯(cuò)誤富文本json字符串(帶雙引號(hào))的快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
C#使用Thrift作為RPC框架入門(mén)詳細(xì)教程
這篇文件我們講了從0到1使用thrift框架的方法,也講了一些該框架的基本知識(shí),本文將詳細(xì)介紹 Thrift 在C#語(yǔ)言下的使用方式,并且提供豐富的實(shí)例代碼加以解釋說(shuō)明,幫助使用者快速構(gòu)建服務(wù),感興趣的朋友一起看看吧2021-11-11
C# 通過(guò) oledb 操作Excel實(shí)例代碼
本篇文章主要介紹了C# 通過(guò) oledb 操作Excel實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
c#基礎(chǔ)系列之System.String的深入理解
這篇文章主要給大家介紹了關(guān)于c#基礎(chǔ)系列之System.String的深入理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09

