網(wǎng)站空間 php怎么在百度上發(fā)布信息廣告
枚舉(Enum)是C#中管理固定狀態(tài)集合的利器,它像"魔法標(biāo)簽"將數(shù)字轉(zhuǎn)化為可讀性極強(qiáng)的語(yǔ)義化常量。今天通過(guò)交通燈案例,帶你徹底吃透枚舉!
🧩 一、枚舉的本質(zhì)特性
值類(lèi)型核心
與結(jié)構(gòu)體(struct)相同,枚舉直接存儲(chǔ)數(shù)據(jù)而非引用,內(nèi)存高效無(wú)負(fù)擔(dān):
enum TrafficLight { Green, Yellow, Red } // 值類(lèi)型聲明
成員唯一性約束
成員必須是整數(shù)值常量,逗號(hào)分隔且禁止分號(hào):
// ? 正確寫(xiě)法(逗號(hào)分隔無(wú)分號(hào))
enum Colors { Red, Green = 5, Blue }
🔢 二、底層運(yùn)行機(jī)制
默認(rèn)int類(lèi)型
編譯器自動(dòng)分配整數(shù)值(從0開(kāi)始遞增):
TrafficLight.Green // 實(shí)際值=0
TrafficLight.Yellow // 實(shí)際值=1
TrafficLight.Red // 實(shí)際值=2
值類(lèi)型驗(yàn)證實(shí)驗(yàn)
var light = TrafficLight.Green;
Console.WriteLine($"狀態(tài):{light},數(shù)值:{(int)light}");
// 輸出:狀態(tài):Green,數(shù)值:0
?? 三、高階自定義技巧
更改底層類(lèi)型
支持所有整數(shù)類(lèi)型(byte/short等),節(jié)省內(nèi)存:
enum Light : byte { Off, Low, High } // 底層byte類(lèi)型
顯式賦值策略
自由設(shè)定初始值,允許重復(fù)數(shù)值:
enum Priority {Low = 10, // 自定義起點(diǎn) Medium = 15, // 跳躍賦值 High = 10 // 允許值重復(fù)(慎用!)
}
🚦 四、實(shí)戰(zhàn)交通燈系統(tǒng)
// 1. 聲明枚舉類(lèi)型
enum TrafficLight { Green, Yellow, Red }// 2. 創(chuàng)建狀態(tài)變量
var currentLight = TrafficLight.Green;// 3. 狀態(tài)切換邏輯
switch(currentLight) {case TrafficLight.Green:Console.WriteLine("通行"); break;case TrafficLight.Yellow:Console.WriteLine("減速"); break;case TrafficLight.Red:Console.WriteLine("停止"); break;
}
💡 五、枚舉核心價(jià)值總結(jié)
優(yōu)勢(shì) | 應(yīng)用場(chǎng)景 |
---|---|
語(yǔ)義化狀態(tài)標(biāo)識(shí) | 狀態(tài)機(jī)(訂單/工作流) |
類(lèi)型安全校驗(yàn) | 替代魔法數(shù)字(錯(cuò)誤代碼) |
智能提示支持 | 開(kāi)發(fā)效率提升 |
內(nèi)存占用優(yōu)化 | 嵌入式/高性能場(chǎng)景 |
? 最佳實(shí)踐:優(yōu)先使用枚舉替代整數(shù)常量,讓代碼獲得"自解釋"的超能力!