c 3 5以上的擴充套件類學習

2021-08-31 05:05:06 字數 653 閱讀 8162

今天在乙個群中看到人家說,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,讓我們有了一種既簡潔,在速度上又較反射有很大的提高。示例如下 反射方式 ...