目錄:
- 建議7:將0值作為列舉的預設值
- 建議8:避免給列舉型別的元素提供顯示的值
- 建議9:習慣運算子過載
一、建議7:將0值作為列舉的預設值
允許使用的列舉型別有:byte、sbyte、short、ushort、int、uint、long、ulong。
不指定值,預設從0開始計數,後面的元素依次+1。
enum Week { Monday=1, Tuesday=2, Wednessday=3, Thursday=4, Friday=5, Saturday=6, Sunday=7 }
列舉是值型別,初始化時沒有指定值,會賦值預設值0。
static Week week;
static void Main(string[] args)
{
Console.WriteLine(week.ToString());
Console.ReadKey();
}
執行結果:0
二、建議8:避免給列舉型別的元素提供顯示的值
如果我們不給Week裡面的成員賦值,那會從0開始,逐一+1。後續我們需要新增新成員時,在最後新增即可,且不影響前面的值。
enum Week
{
Monday=1,
Tuesday=2,
Wednessday=3,
Thursday=4,
Friday=5,
Saturday=6,
Sunday=7
}
看了一下專案,裡面有許多是給成員賦值了。這種情況多數是對應資料庫相應欄位的值(例如:每個值代表一種情況 — 等待=2,傳送成功=1,未傳送=3,傳送失敗=0)
還有一種情況是列舉值位運算,可以瞅瞅我之前寫的:列舉與位運算
三、建議9:習慣運算子過載
我們很自然地這樣使用+
decimal a = 1; decimal b = 2; decimal c = a + b;
當然也可以這樣:
decimal c1=decimal.Add(a,b);
以上兩種情況都是兩數相加,但是第一種+更加符合我們的生活習慣。其實+就是進行了運算子過載:decimal型別給許多運算子號進行了運算子過載.
運算子過載:必須是 public,static,有關鍵字標識 operator,至少有一個引數和返回值的型別相同。
public static decimal operator +(decimal d1, decimal d2);
我們自定義一個型別也實現運算子+過載:
class Salary { public decimal RMB { get; set; } public static decimal operator +(Salary left,decimal right) { left.RMB+=right; return left.RMB; } }
因為我平時不太有這方面的需求,但是也要習慣運算子過載。或許有的型別的設計可以進行優化。等會瞅瞅~~