扩展方法略好于帮助方法
生活随笔
收集整理的這篇文章主要介紹了
扩展方法略好于帮助方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果針對一個類型實例的代碼片段經常被用到,我們可能會想到把之封裝成幫助方法。如下是一段針對DateTime類型實例的一段代碼:
class Program { static void Main(string[] args) { DateTime d = new DateTime(2001,5,18); switch (d.DayOfWeek) { case DayOfWeek.Saturday: case DayOfWeek.Sunday: DoWeekendThing(); break; default: DoWeekDayThing(); break; } Console.ReadKey(); } static void DoWeekendThing() { Console.WriteLine("周末好好休息放松心情"); } static void DoWeekDayThing() { Console.WriteLine("認真工作"); } }?
以上,把判斷是否是周末的代碼片段封裝到幫助類、幫助方法中如下:
?
public static class DateTimeHelper { public static bool IsWeekend(DateTime dateTime) { switch (dateTime.DayOfWeek) { case DayOfWeek.Saturday: case DayOfWeek.Sunday: return true; default: return false; } } }?
在客戶端:
?
class Program { static void Main(string[] args) { DateTime d = new DateTime(2001,5,18); if (DateTimeHelper.IsWeekend(d)) { DoWeekendThing(); } else { DoWeekDayThing(); } Console.ReadKey(); } static void DoWeekendThing() { Console.WriteLine("周末好好休息放松心情"); } static void DoWeekDayThing() { Console.WriteLine("認真工作"); } }?
用幫助類、幫助方法固然好,因為進行了很好的封裝,但每次都必須要記住擴展方法在DateTimeHelper這個擴展類中。如果System.DateTime包括IsWeekend方法會更好!
?
擴展方法是一種特殊的靜態方法,可以讓編寫的方法像現有類型的實例方法一樣被使用。
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關鍵字??
?
客戶端修改為:
class Program { static void Main(string[] args) { DateTime d = new DateTime(2001,5,18); if (d.IsWeekend()) { DoWeekendThing(); } else { DoWeekDayThing(); } Console.ReadKey(); } static void DoWeekendThing() { Console.WriteLine("周末好好休息放松心情"); } static void DoWeekDayThing() { Console.WriteLine("認真工作"); } }?
總結:擴展方法貌似略好于幫助方法,可以作為類型實例的方法直接被調用。
轉載于:https://www.cnblogs.com/darrenji/p/4114699.html
總結
以上是生活随笔為你收集整理的扩展方法略好于帮助方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到怀孕龙凤胎有什么预兆
- 下一篇: 做梦梦到爬叉是什么意思