關於擴充套件方法,需要留意的原則和規則

2022-02-19 12:42:47 字數 1136 閱讀 9050

我可不可以這樣理解,效能只是在編譯時有損失,編譯之後就和普通的靜態方法呼叫一樣了,沒有任何區別

,之所以能得出這個結論是因為通過比較如下的兩種呼叫方式和對應的il**:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace extention

}public static class extention1

public static string dt1(datetime dt)}}

main函式中對dt的三種呼叫生成的il**如下:

c#編譯器是如何快速的定位擴充套件方法的匹配的呢?

另外,任何靜態類只要包含至少乙個擴充套件方法,它的元資料也會應用這個特性,類似的,程式集中只要包含了至少乙個符合上述特點的靜態類,它的元資料中也會應用這個特性,

這樣一來,如果**呼叫了乙個不存在的例項方法,編譯器就能快速的掃瞄引用的所有程式集,判斷他們哪些包含了擴充套件方法,然後在這些程式集中,可以只掃瞄包含了擴充套件方法的靜態類,

在每個這樣的靜態類中,可以只掃瞄擴充套件方法來查詢匹配,利用這些技術,**能以最快的速度編譯完畢;

.class public auto ansi abstract sealed beforefieldinit extention.extention1

extends [mscorlib]system.object

// end of method extention1::dt

.method public hidebysig static

string dt1 (

valuetype [mscorlib]system.datetime dt

) cil managed

// end of method extention1::dt1

} // end of class extention.extention1

關於優化需要永遠牢記的原則

1.盡量不要去搞什麼效能優化,因為十有 你會失望的 首先,不要指望調節系統引數就能帶來效能的大幅提公升,這永遠都不可能,因為如果能大幅提公升,那組引數早就成預設引數或者寫進文件了,即使不一定這樣,起碼有對技術比較痴迷的傢伙會把類似的經驗分享出來,輪到你來做這件事的機率很低很低。正如你能想到電梯的創意...

關於和領導相處的原則

我的上任領導 river 其實已經算很好說話了,但是我們還是合作不來,其實大部分原因是在我的。所以昨天和我的上任領導談話了,核心圍繞對我的評價展開的 1.對我的評價,主要說缺點 對我最大的影響就是問題很多,典型的問題寶寶。但是如果做研發,這個是ok的,做演算法的如果沒有問題就做不下去了。但是對於事物...

關於Pycharm安裝擴充套件包的方法

關於pycharm安裝擴充套件包的方法 1.pip install 一般的pycharm都自帶有pip,如果沒有,就去下乙個pip的安裝包,將安裝包解壓在python的根目錄,搭建好python的環境,然後用python來安裝pip,基本上就可以在pycharm 的terminal介面或者命令提示介...