He aquí un ejemplo de lo que estoy hablando ...¿Por qué no debe tener acceso a un miembro compartido/estático a través de una variable de instancia?
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
da una advertencia en VB.NET y (el código equivalente da) un error en C#. ¿Hay alguna razón en particular para esto? Me resulta más intuitivo/natural acceder a la función compartida usando 'Me.MyValue', pero lo evito para mantener mis advertencias en 0.
¿Alguien más decidió 'Nah, tiene más sentido hacerlo de otra manera 'o hay alguna razón técnica que no entiendo?
EDIT:
Gracias a todos. Estaba pensando que estaba mal, más como una 'subclase' en OOP. Incluso si algo se declara en la clase base, se accede a través de la instancia que tiene. Pero esa relación no es lo mismo con compartida o estática.
Esto. La función MyValue no pertenece a ninguna instancia; por lo tanto, debe accederse fuera de los límites de una sola instancia. Si trato de usar el equivalente de C# de mi.MyValue resultaría en un error de compilación, por lo que incluso si está permitido en VB, es malo. – KeithS
@KeithS: ¿pretendes que sea una respuesta o un comentario sobre mi respuesta? –
Un comentario. Iba a decir exactamente lo mismo que tú, así que simplemente te subí y lo dije a mi manera. :) – KeithS