擴充套件方法(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 例子中我定義了乙個擴充套件方法,這個方...