這裏就是我談論的例子...爲什麼不能通過實例變量訪問共享/靜態成員?
Public Class Sample1
Public Shared Function MyValue() As Integer
Return 0
End Function
Public Sub Code()
Dim ThisIsBad = Me.MyValue
Dim ThisIsGood = Sample1.MyValue
End Sub
End Class
Me.MyValue
給出VB.NET警告,(相當於代碼給出)在C#中的錯誤。這是否有特別的原因?我發現使用'Me.MyValue'訪問共享函數更直觀/自然 - 但我避免它將我的警告保持爲0.
是否有其他人只是決定'呃,這樣做更有意義其他方式「還是有一些我不明白的技術原因?
編輯:
謝謝大家。我在想它是錯誤的,更像是OOP中的「子類」。即使在基類中聲明瞭某些東西,也可以通過您擁有的實例來訪問它。但是這種關係與共享或靜態關係並不相同。
這。 MyValue函數不屬於任何一個實例;因此應該在單個實例的範圍之外訪問它。試圖使用me.MyValue的C#等價物會導致編譯器錯誤,所以即使在VB中允許它也是不好的。 – KeithS 2011-03-03 16:03:59
@KeithS - 你是否打算成爲答案或對我的答案發表評論? – 2011-03-03 16:06:04
評論。我打算說完全一樣的事情,所以我只是誇耀你並用我的方式說出來。 :) – KeithS 2011-03-03 16:07:36