2010-03-27 89 views
1

这里是什么,我会在Visual Basic中做了一个例子:共享(静态)类与C#的活动

Public Class Class1 
    Public Shared WithEvents Something As New EventClass 

    Public Shared Sub DoStuff() Handles Something.Test 

    End Sub 
End Class 

Public Class EventClass 
    Public Event Test() 
End Class 

如何在C#这样做吗?

我知道C#中没有Handles子句,所以我需要调用一些函数并在那里分配事件处理程序。然而,由于它是一个共享类,所以没有构造函数。我必须把它放在函数之外的某个地方。

如何实现?

回答

2

您可以使用静态构造函数...

static readonly EventClass _something; 

static Class1() 
{ 
    _something = new EventClass(); 
    _something.Test += DoStuff; 
} 

static void DoStuff() 
{ 
} 
+3

只要记住,静态构造函数程序开始像C/C++时,不会自动调用。当你在代码中第一次访问静态类时,它们被调用,对于所有静态成员变量,代码也是一样的。 – affan 2010-03-27 07:58:30

+0

@affan感谢您的信息.. – 2010-03-27 08:08:38

1

请尝试以下

public static class Class1 { 
    private static EventClass something; 
    public static EventClass Something { 
    get { return something; } 
    } 
    static Class1 { 
    something = new Class1(); 
    something.Test += DoStuff; 
    } 

    public static void DoStuff() { 
    ... 
    } 
}