C 中的擴充套件方法

2021-07-02 17:23:54 字數 2517 閱讀 8697

擴充套件方法的目的就是向乙個現有型別中新增方法,現有型別可以是已存在的型別,比如int,string等資料型別,也可以是我們自定義的資料型別。

擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。

某個已經存在資料型別,該型別下的方法無法滿足我們的需求,這個時候就需要我們自己來擴充套件。

1.下面我們給已存在型別string新增乙個add方法,該方法的作用是往字串前面追加字串「hello world」

class program

}//新增擴充套件方法的類必須為靜態類(該類的主要作用是為另一型別新增擴充套件方法,所以該類不能被例項化)

static class extensionmethod

}

2.下面我們再來給我們自定義的型別student新增幾個擴充套件方法

自定義的student型別 包含三個屬性 年齡 姓名 住址 和乙個建構函式 初始化年齡和姓名

namespace students

set

}//public int age //等同於上面的寫法

private string _name;

public string name

set

}//public string name //等同於上面的寫法

private string _address;

public string address

get

}//public string address //等同於上面的寫法

//建構函式 物件初始化

public student(int age,string name)

}}

這個類包含我們要擴充套件的方法    此類必須為靜態類

namespace extensionmethods

public static void printstudentage(this student stu)

public static void printstudentinfo(this student stu,string address)

,年齡:,住址",stu.name,stu.age,stu.address);}}

}

在這裡我們就可以使用擴充套件方法了,注意需要引用擴充套件方法所在的命名空間

namespace extensionmethoddemo

}}//output:

//年齡:22

//姓名:xiaochoudaxia

//姓名:xiaochoudaxia,年齡:22,住址北京

擴充套件方法還可以應用到介面上。

編譯時,擴充套件方法的優先順序總是比型別本身中定義的例項方法低。換句話說,如果某個型別具有乙個名為process(int i)的方法,而你有乙個具有相同簽名的擴充套件方法,則編譯器總是繫結到該例項方法。當編譯器遇到方法呼叫時,它首先在該型別的例項方法中尋找匹配的方法。如果未找到任何匹配方法,編譯器將搜尋為該型別定義的任何擴充套件方法,並且繫結到它找到的第乙個擴充套件方法。

3.下面的示例演示了擴充套件方法應用到介面上和 c# 編譯器在確定是將方法呼叫繫結到型別上的例項方法還是繫結到擴充套件方法時所遵循的規則。

namespace defineimyinte***ce

}

namespace extensions

public static void methoda(this imyinte***ce myinte***ce,int i)

public static void methoda(this imyinte***ce myinte***ce,string s)

}}

namespace extmethoddemo

}class b : imyinte***ce

public void methoda(int i)

}class c : imyinte***ce

public void methoda(object o)

}class program

}}//result:

//extension:methoda(this imyinte***ce myinte***ce,int i)

//extension:methoda(this imyinte***ce myinte***ce,string s)

i)//extension:methoda(this imyinte***ce myinte***ce,string s)

o) o)

本人目前於北京一家公司從事web方面的程式設計工作,是入行不久的新人。為了提公升自己的技術水平,遂決定從頭開始系統學習。並將自己平時所學彙總成文分享給大家,同時也是為了加深自己的記憶。文中如有疏忽不妥之處,還望大家多多指正。

C 中的擴充套件方法

c 中的擴充套件方法用來為現有型別新增方法,以擴充套件現有的型別,這些型別可以是基本的資料型別 如int string等 也可以是自己定義的型別。擴充套件方法是通過指定關鍵字this修飾方法的第乙個引數而宣告的。擴充套件方法只可以宣告在靜態類中。以下為擴充套件基本型別string public st...

C 中的擴充套件方法

擴充套件方法使用 在實際專案中,通常會定義乙個靜態類,類中包含一些常用的操作方法 如字串處理,判斷字串是否是正確的 號碼或者email等 將這些方法定義為靜態方法,c 3.0中引入擴充套件方法的概念,使用方式 在使用擴充套件方法的第乙個引數前面加this關鍵字。下面演示了擴充套件方法的簡單使用 st...

C 中的擴充套件方法

這個特性是從.net3.5的時候開始出現的,是指在原有類中插入乙個方法,用於給原有類擴充套件新的功能的方法。給我的感覺就是有點類似於外掛程式的意思。比如下面的 1 namespace extendfunction 2 11 12static class extclass 13 18 19 雖然我上面...