C 擴充套件方法

2021-09-11 16:00:42 字數 2308 閱讀 7681

擴充套件方法(extension methods)是c#3.0時引入的新特性,是一種特殊型別的靜態方法。對於乙個c#型別,如類、引用型別、值型別、介面等,擴充套件方法可以在不改變該型別原始碼的前提下,為它的例項提供新的成員。因此,若要為乙個框架或第三方庫的某個型別增加輔助功能,通過擴充套件方法就可以輕而易舉的實現。

宣告擴充套件方法的類必須為static類;

擴充套件方法本身也必須宣告為static;

擴充套件方法必須包含關鍵字this作為第乙個引數型別,並在後面跟著它所擴充套件的型別的名稱。

例如:針對int型別,計算int物件的平方的擴充套件方法如下所示:

/// /// 自定義的擴充套件方法:必須是在靜態類中

///

public static class customextendmethod

}

帶引數的擴充套件方法定義格式: static 方法名 (this 目標型別 目標型別引數,引數型別1,引數名2,… )

/// /// 針對物件擴充套件有引數方法

///

/// 要擴充套件的型別

/// 第乙個引數

///

public static string showcourse(this course course, int period)

:直播次數: ");

}

// 先定義動物物件

public class animal

public string species

public int age

public double weight

}/// /// 自定義的擴充套件方法:必須是在靜態類中

///

public static class customextendmethod

/// /// 重新定義系統的擴充套件方法

///

///

///

public static string tostring(this int num)

重新定義的tostring方法:";

}/// /// 針對物件擴充套件無引數方法

///

///

///

public static string introduce(this animal dog)

/// /// 針對物件擴充套件有引數方法

///

/// 要擴充套件的型別

/// 第乙個引數

///

public static string addweight(this animal dog, int num)

,又增加了";

}/// /// 自定義乙個擴充套件方法實現查詢

///

///

///

/// 有乙個輸入引數,乙個輸出引數

///

public static ienumerablemycustomwhere(this ienumerablesource, funcpredicate)

}return list;

}}// 測試方法

static void main(string args)

; console.writeline(dog.introduce());

console.writeline(dog.addweight(10));

//擴充套件方法的更多應用

console.writeline("\r\n*******************擴充套件方法的更多應用*****************");

listdoglist = new list()

,new animal ,

new animal ,

new animal ,

};console.writeline("\r\n*******************使用自帶的where擴充套件查詢方法*****************");

var list1 = doglist.where(c => c.age > 6);

foreach (var item in list1)

\t\t\t");

}console.writeline("\r\n*******************自定義擴充套件查詢方法*****************");

var list2 = doglist.mycustomwhere(c => c.age > 6);

foreach (var item in list2)

\t\t");

}console.read();

}

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

使用 net 3.0之後,我一直都覺得有種方法很奇怪,這種方法在一般的方法前面多了乙個藍色的向下箭頭。這種方法其實是擴充套件方法,這種擴充套件方法不需要去修改原類。class program public static class extendfunction 例子中我定義了乙個擴充套件方法,這個方...