在以前沒有這東西的時代裡,我們如果想要檢查一個陣列(array)是否有值,
或者是否為 null 的時候,可能是寫個 method 去檢查,或是直接來。類似這樣:
// method 檢查 bool IsNullOrEmpty(string[] instance) { return (instance == null) || (instance.Length == 0); } // 直接來 string[] array; bool result = (array == null) || (array.Length == 0);換成 Extension Methods 該怎麼寫呢?就像下面這樣:
namespace Frank.Extensions { public static class ArrayExt { public static bool IsNullOrEmpty<T>(this T[] instance) { return (instance == null) || (instance.Length == 0); } } }關鍵字是 "this" 意思有點像是把自己當參數傳進來的那種感覺,
上面同時也用了泛型,因此只要 using Frank.Extensions;
各型別的陣列都可以用 IsNullOrEmpty() 這方法囉!
這樣在使用上就變得更簡單了,同時也更容易閱讀了吧。
比較一下用 Extension Methods 和完全不用的樣子看看:
string[] array; // 使用 Extension Methods if (array.IsNullOrEmpty()) { // do some thing } // 直接來 if ((array == null) || (array.Length == 0)) { // do some thing }是不是更容易閱讀了呢?
沒有留言:
張貼留言