標籤:
擴充方法就是一種特殊的靜態方法,不用建立衍生類別和重新編譯原始類型。
例:判斷今天是周末還是工作日
DateTime date = new DateTime(2015, 4, 2);switch (dateTime.DayOfWeek){ case DayOfWeek.Saturday: case DayOfWeek.Sunday: return true; default: return false;}
如果要減少代碼的重複,可以寫helper類
public static class DateTimeHelper{ public static bool IsWeekend(DateTime dateTime) { switch (dateTime.DayOfWeek) { case DayOfWeek.Saturday: case DayOfWeek.Sunday: return true; default: return false; } }}
調用
if(DateTimeHelper.IsWeekend(date)) WeekendProcessing();else WeekdayProcessing();
使用擴充方法:
public static class DateTimeExtensions{ public static bool IsWeekend(this DateTime dateTime) { switch (dateTime.DayOfWeek) { case DayOfWeek.Saturday: case DayOfWeek.Sunday: return true; default: return false; } }}
區別在於方法的一個的參數 需要用 this 關鍵字 這個是表明了擴充的類 還需要注意的是 必須是靜態方法 而別不能與現有方法簽名相同
調用:
DateTime date = new DateTime(2015, 4, 4);if (date.IsWeekend()) WeekendProcessing();else WeekdayProcessing();
把IsWeekend()方法記做了 DateTime方法的一部分 這樣用的時候 和方便 也方面積累方法
最後使用的時候別忘記進去擴充類的命名空間
C# 擴充方法