对事件和类的方法使用相同的名称

时间:2011-08-15 15:45:59

标签: vb.net events overloading

我正在写一个与事件和方法具有相同名称的类,但是视觉学习不允许我

事件

public event Close()

方法

Public Sub Close()

End Sub

我怎么能这样做,我不想使用不同的名字

感谢

3 个答案:

答案 0 :(得分:4)

Microsoft框架设计指南指出了以下内容作为最佳实践(这些内容来自我们的内部文档,但源自前面提到的指南,我将在其中找到链接):

  
      
  • 使用动词或动词短语命名事件。
  •   
  • 使用现在和过去时,给事件名称赋予前后概念   (动名词)
      
        
    • 例如,在窗口关闭之前引发的关闭事件将被称为> Closing和窗口关闭后引发的Closed将被称为Before
    •   
  •   
  • 请勿使用AfterEventHandler前缀或后缀来表示事件前后事件。
  •   
  • 使用sender后缀命名事件处理程序(用作事件类型的委托)。
  •   
  • 在事件处理程序签名中使用名为eObject的两个参数。   
        
    • sender参数应为e类型,EventArgs参数应为EventArgs的实例或继承自Closing
    •   
  •   
  • 使用OnClosing后缀命名事件参数类。
  •   
  • 使用On命名事件处理程序方法。   
        
    • 例如,处理{{1}}事件的方法应命名为{{1}}。
    •   
  •   

更新:Relevant Microsoft Design Guidelines Link

答案 1 :(得分:1)

AFAIK .NET编译器不允许这种重载。 试试这个:

public event OnClose()

Public Sub Close()
    ' implementation goes here
End Sub

答案 2 :(得分:1)

如果编译器允许这样做,那么它可能允许实例变量和委托具有相同的名称。想象一下这个(荒谬的)代码:

Public Class Class1
    Public XYZ As String
    Public Event XYZ(ByVal X As XYZ)
    Public Delegate Sub XYZ()
    Public Sub XYZ()
        RaiseEvent XYZ(AddressOf XYZ)
    End Sub
End Class