Vb.net 静态类的事件处理
我对VB.NET中的事件基础知识有问题。我想有一个静态类,但在VB.NET中它不存在,等价物是Vb.net 静态类的事件处理,vb.net,static,event-handling,Vb.net,Static,Event Handling,我对VB.NET中的事件基础知识有问题。我想有一个静态类,但在VB.NET中它不存在,等价物是模块。所以我有一个模块,里面有一些属性(当然是静态的)。例如: Public Module MyModule Private _value As Integer Public Event ValueChanged() Public Property Value() As Integer Get Return _value End Get
模块
。所以我有一个模块,里面有一些属性(当然是静态的)。例如:
Public Module MyModule
Private _value As Integer
Public Event ValueChanged()
Public Property Value() As Integer
Get
Return _value
End Get
Set(ByVal value As Integer)
_value = value
RaiseEvent ValueChanged()
End Set
End Property
End Module
在我的情况下,我想处理更改的\u值
。这个代码应该可以。但如果我想在另一个类中处理它:
Public Class MyClass
Public Sub Method_ValueChanged() Handles MyModule.ValueChaged
'Do something...
End Sub
End Class
这里有一个问题,因为MyModule必须用events声明为
,但MyModule是静态的,所以不能这样做。您能告诉我如何处理来自另一个类的静态类事件吗?谢谢。您必须使用AddHandler
例如:
Module A
Private _value As Integer
Public Event ValueChanged()
Public Property Value() As Integer
Get
Return _value
End Get
Set(ByVal value As Integer)
_value = value
RaiseEvent ValueChanged()
End Set
End Property
End Module
Module B
Sub Main
AddHandler ValueChanged, AddressOf Method_ValueChanged
A.Value = 12
End Sub
Public Sub Method_ValueChanged()
Console.WriteLine("Changed!")
End Sub
End Module
运行此命令将打印更改是静态的。模块类似于C#中的静态类,但您不需要模块来定义共享方法或字段。很抱歉,通常我在C#中工作……为了得到类似于vb.net中静态类的东西,我建议使用私有构造函数创建一个不可继承的类,并且只使用共享函数。@SilvioMarcovic:您也可以使用模块。这也是一个不可继承的类,您不能仅使用共享成员来建立它。对扩展方法来说,这也是必须的。是的,关于使用什么,有很多讨论。模块或静态类。我想两种选择都可以。除了你提到的扩展。大多数情况下,c#到vb.net转换器将静态类转换为不可继承类。