今天在乙個群中看到人家說,c#3.5以上中,有個叫擴充套件方法的東西,於是看了下,
原來大概是這樣:
比如,我們傳統的情況下,要檢驗乙個email是否合法,可能要這樣寫:
string email = request.querystring["email"];
if ( emailvalidator.isvalid(email) )
這裡用到了乙個工具類,自己編寫的,而現在可以這樣了,直接
string email = request.querystring["email"];
if ( email.isvalidemailaddress() )
其實這裡是直接擴充套件了string 類中,為其增加了新的方法,但卻沒更改string類中的**和編譯了其中的**!,這樣做:
public static class test$");
return regex.ismatch(s);}}
增加靜態類和增加靜態方法,這樣就可以了,注意其中
public static bool isvalidemailaddress(this string s)
中的this,意思是告訴編譯器,針對string進行擴充套件,
使用的時候,很簡單,只需要using test;
這樣就可以實現了.
C 3 5 新特性的總結 一
c 3.5 新特性的總結 一 物件初始化 如果乙個類有public欄位,在建立類的物件例項時可以使用下面的 來初始化這些字段 public class myclass myclass my new myclass my.field1 abcd my.field2 44 my.field3 true ...
C 3 5 新特性的總結 一
c 3.5 新特性的總結 一 物件初始化 如果乙個類有public欄位,在建立類的物件例項時可以使用下面的 來初始化這些字段 public class myclass myclass my new myclass my.field1 abcd my.field2 44 my.field3 true ...
C 3 5新增的Expression來提公升反射效能
眾所周知,反射對於執行時確定物件型別十分方便,但是它最大的不足就是效率低下,比直接呼叫的效率慢了一百倍有餘。在3.5以前有codedom或借助emit直接編寫il來優化其效率,但是使用不便,借助3.5新增的expression,讓我們有了一種既簡潔,在速度上又較反射有很大的提高。示例如下 反射方式 ...