正在寫有事件和方法相同名字的類的方法,但視覺studion不會讓我使用相同的名稱爲事件類
事件
public event Close()
方法
Public Sub Close()
End Sub
我怎麼能做到這一點,我不希望使用不同的名稱
感謝
正在寫有事件和方法相同名字的類的方法,但視覺studion不會讓我使用相同的名稱爲事件類
事件
public event Close()
方法
Public Sub Close()
End Sub
我怎麼能做到這一點,我不希望使用不同的名稱
感謝
微軟框架設計指南指定沿着以下爲最佳實踐的東西線(這些都是從我們的內部文件,但前者提到的準則得出,而我會找到一個鏈接) :
- 用動詞或動詞短語做名稱事件。
- 不要給事件名稱的概念之前和之後,利用現在和過去時態 (動名詞)
- 例如,之前被關閉的窗口將被稱爲>
Closing
和被提出了關閉事件在窗戶關閉後擡起的一個將被稱爲Closed
。- 請勿使用
Before
或After
前綴或後綴來指示事件前和事件後。- 是否使用
EventHandler
後綴命名事件處理程序(代表用作事件類型)。- 在事件處理程序簽名中,請使用名爲
sender
和e
的兩個參數。
- 發件人參數應該是
Object
類型,並且e
參數應該是EventArgs
的一個實例或從其繼承。- 使用
EventArgs
後綴做名稱事件參數類。- 使用On命名事件處理程序方法。
- 例如,處理事件的方法應該被命名爲
OnClosing
。
AFAIK .NET編譯器不允許這種重載。 試試這個:
public event OnClose()
Public Sub Close()
' implementation goes here
End Sub
雖然不是法律,但微軟反其道而行(請參閱我的回答)。 –
如果編譯器允許這樣做,那麼它可能會允許實例變量和委託具有相同的名稱。想象這(無意義)代碼:
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
VB6執行此很多,採取例如Winsock控件,它有一個事件'close'和方法'Close'。我們爲什麼要限制? .net編譯器無法弄清楚這一點? – Smith
vb6事件使用不同的接口,防止模糊。這不是.NET的工作方式。一個好的活動名稱將是關閉或關閉。 –
感謝您的澄清 – Smith