一個小的 Tips.
.NET 中函數參數的默認值需要是編譯時常量。如果參數是引用類型,可以設置Null,如果是值類型,可以設置相應的編譯時常量,如整型可以用整數,但對於DateTime(結構體,值類型)想要設置默認類型時要如何處理?
通常情況下會給 DateTime 結構體默認當時時間,即 DateTime.Now,但 DateTime.Now 不是編譯時常量,因此無法通過編譯。
如以下代碼無法通過編譯:
public const DateTime defaultDateTime = DateTime.Now;
但可以通過設置 DateTime 類型參數為可空類型,給其默認參數為 null,並在函數中進行判斷賦值來實現,如下代碼:
static void TestMethod(DateTime? date = null) { date = date ?? DateTime.Now; }
以上思路是將 DateTime 參數轉換為可空類型,並賦予默認值 null,然后在函數體內先判斷參數是否為空,如果為空則用 DateTime.Now 來賦值,否則使用參數值。
以上內容很簡單,只是覺得這個 Tips 很好玩。