2010-03-05 33 views
12

什麼是C#構造函數extern修飾符的用途?C#構造函數extern修飾符的用途

我知道使用extern方法來調用Win32函數,但是CONSTRUCTORS呢?

請舉例說明。

注意這一點:

class MyClass 
{ 
    public extern MyClass(); 
} 
+1

請舉例說明你的意思。 – 2010-03-05 09:18:10

+0

我以爲MSDN版本的定義和例子會有所幫助? http://msdn.microsoft.com/en-us/library/e59b22c5%28VS.80%29.aspx – 2010-03-05 09:21:49

+1

但這不適用於構造函數,也許這是他的問題,但我不知道,因此我想他詳細闡述。 – 2010-03-05 09:22:37

回答

1

C#的規範here表明,除了專用內部,protected和public,可以使用的extern並認爲這是標準的外部參考 - 見here。這對我來說說,將來的時間裏,contstructor會被鏈接到課堂上。就像PInvoke呼叫一樣。沒有什麼,我猜測,停止C#編譯器實現者允許鏈接包含所述外部構造函數的外部.net。模塊。

我不能舉一個例子,但我懷疑有一種方法會在MC++中實現構造函數,或者實際上只是一個簡單的IL .module。

6

我相信一個使用/ extern ctor的目的是讓構造函數在CLR本身內實現。如果你拆機mscorlib.dll中使用反射,並期待在System.String類型,你會看到:

[MethodImpl(MethodImplOptions.InternalCall)] 
public extern String(char[] value); 

這基本上告訴我們(的char [])構造函數的字符串類是外部實現,作爲.net運行時的一部分