这里就是我谈论的例子...为什么不能通过实例变量访问共享/静态成员?
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