c#中可以定義擴充套件方法,還可以為集合做擴充套件方法。
示例如下:
using
system;
using
system.collections.generic;
using
myspace;
//注意:引入擴充套件方法的空間
namespace
con_1
先生。"
.with(
"xugang");
console.writeline(
"您好!"+
str);
//2呼叫集合的擴充套件方法
str.showitems
<
char
>
();}}}
namespace
myspace
//2為集合做擴充套件方法
public
static
void
showitems
<
t>
(this
ienumerable
<
t>
_al)}}
}
注意:
1 c# 只支援擴充套件方法,不支援擴充套件屬性、擴充套件事件等;
2 方法名無限制,第乙個引數必須帶 this ;
3 擴充套件方法的命名空間可以使用 namespace system ,但不推薦;
4 定義擴充套件方法的類是靜態類;
在使用this 引數擴充套件了方法之後,該程式集會在編譯的時候會在對應靜態類上加上類似以下的東西。以便於呼叫的時候方便找到。
[attributeusage(attributetargets.method
|attributetargets.class
|attributetargets.assembly)]
public
sealed
class
extensionattribute : attribute
msil 中,自動新增了如下的**:
.custom instance
void
[system.core]system.runtime.compilerservices.extensionattribute::.ctor() =(
0100
0000)
可以看出,在執行時是需要引用 system.core.dll。
C 中的擴充套件方法學習總結
擴充套件方法從字面上理解是指擴充套件的方法,而對應到物件導向程式設計這個格局中則是指為乙個類提供的擴充套件方法。按照我們通常的理解,我們首先需要獲得某個類的源 然後在這個類 中增加成員方法,這樣就可以達到為乙個類提供擴充套件方法的目的。可是不幸地是,這種方法在沒有源 的情況下就無法奏效了,而且我們人...
擴充套件方法學習筆記 原
擴充套件方法是c 3.0中新加入的特性。msdn中對擴充套件方法的定義是 擴充套件方法使您能夠向現有型別 新增 方法,而無需建立新的派生型別 重新 編譯或以其他方式修改原始型別。擴充套件方法是靜態方法 並且第乙個引數要用this修飾 這個方法將作為第乙個引數也就是帶this引數的類的乙個擴充套件方法...
C 學習 擴充套件方法
對於乙個已有類來說,其方法應該是固定的,但有些時候我們需要給其新增新的方法來實現一些新功能。比如說,將double陣列以字串形式輸出,double.tostring 得到的結果是system.double,而不是我們想要的。那麼,如何實現這種效果呢?單獨寫乙個方法也是可以的,如 public str...