2014-11-04 63 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类型的三个局部变量。