2014-11-04 62 views
0

我已經在一個類中定義了一個委託字段,並且直接在靜態函數內部(無需創建對象)初始化該委託字段。它不應該工作,因爲沒有該類的對象,並且委託字段不是靜態的。但它的工作。任何人都可以解釋它是如何工作的。我抄我的一些下面的代碼以供參考:在靜態函數中使用委託

class Test 
{ 

    delegate void CustomDel(String s); 

    static void main() 
    { 
    CustomDel del1, del2, del3; //it shouldn't work, but is working. 
    } 
} 

回答

2

這不會做你認爲:

delegate void CustomDel(String s); 

這不是一個領域,這是一個委託類型的定義。把它看成是這樣的:

private class CustomDel : Delegate 
{ 
    // ... 
} 

上面的代碼將無法編譯,因爲你不能聲明代表這樣,但它的引擎蓋下發生的基本上就是:CustomDel是一種類型,只有特別一。現在

你的代碼應該能理解:

CustomDel del1, del2, del3; 

這隻聲明CustomDel類型的三個局部變量。