2009-01-09 16 views
11

Actualmente estoy trabajando en una aplicación web (ASP.NET) y algunas de las páginas que se incluyen fueron creadas por otros programadores, lo que noté es que no están usando la palabra clave "Me (VB.NET)" para acceder controles, mientras que de mi lado lo usé en cada página que he creado. Solo para brindar más información, la aplicación web se ejecuta en .NET Framework 2.0. ¿Hay alguien por ahí que me ayude a entender si se requiere usarme o no? ¿Cuáles son las ventajas y desventajas de todo el código si me está utilizando? ¿Puede mejorar el rendimiento de la aplicación?Usar la palabra clave Me (VB.NET) ¿es obligatorio o no?

Cualquier ayuda es muy apreciada. Gracias por adelantado.

Respuesta

15

Por lo que entiendo, es pura preferencia, pero puede desambiguar entre propiedades y variables/parámetros de ámbito local. Algunas personas lo incluyen religiosamente por costumbre. De esta forma, si tuvieran que introducir una variable local del mismo nombre, nada se rompería.

Digamos que tiene un método definido DoSomething(MyString As String) y la clase también tiene un String llamado MyString. La única forma de referenciar la clase versión de MyString es usar Me.MyString. Por lo tanto, dices Me.MyString = MyString y el compilador sabe lo que quieres.

1

Creo que para la interfaz de usuario controla su gran cantidad de preferencias del usuario.

Pero prefiero el uso de "Me", especialmente si está utilizando propiedades de clase, en caso de que haya algún código que deba ejecutarse antes de acceder a esa variable.

Ejemplo

Class Sample 
     Private myString as String 

     Public Property GetMyString As String 
     Get 
      ' Some code here which sets the string after reading value from the database 
     End Get 
     Set 
     End Set 

     End Property   
End Class 

En este caso no es una diferencia entre el uso con o sin palabras clave "Me".

+0

ese código no funcionaría en vb.net ya que es insensible a mayúsculas/minúsculas a diferencia de C#. –

+0

Lo he corregido ahora. – MOZILLA

+0

gracias por la actualización :) –

1

La palabra clave Me es opcional de la misma manera que tiene la opción de calificar completamente un espacio de nombres aunque lo haya importado en la parte superior de la clase.

Sin embargo, si tiene un control en el formulario con el mismo nombre que otro objeto en otro espacio de nombre importado, puede ser esencial.

6

En algunos casos se requiere, tomemos por ejemplo, una variable en el ámbito de una clase, y un parámetro que se pasa a una sub-rutina que tiene un nombre equivalente de este modo:

Private theString As String 

Private Sub Setup(ByVal theString As String) 
    Me.theString = theString 
End Sub 

Se pone las cosas en el contexto correcto para permitir que las asignaciones se lleven a cabo correctamente.

En su caso, algunos desarrolladores tienden a hacerlo para que sepan de dónde viene la variable, algo que también harán mis compañeros de trabajo. También se suele hacer porque intellisense mostrará su lista de variables locales si escriben "Yo", algo que normalmente no hago, aunque probablemente debería hacer más.

2

El uso de la palabra clave Me no afecta el rendimiento. Es puramente una cuestión de estilo. Creo que mejora la claridad de tu código si lo usas. Entonces, a primera vista, sabe que el miembro utilizado pertenece al objeto en sí y no es una variable local, por ejemplo.

La palabra clave Me se utiliza cada vez que queremos que nuestro código haga referencia a miembros (métodos, propiedades, ...) dentro del objeto actual.La palabra clave Me es análoga a esta palabra clave en C++ y C# lenguajes. La palabra clave Me es generalmente opcional, ya que cualquier llamada al método es se supone que se refiere al objeto actual a menos que se indique explícitamente lo contrario.

La excepción es cuando usa variables sombreadas. Una variable sombreada es una variable a nivel de procedimiento con el mismo nombre que una variable de la clase. Por ejemplo:

Public Class ExampleClass 

    Private FirstName As String 

    Public Sub ExampleMethod() 
    Dim FirstName As String 
    FirstName = "Stefan" 
    End Sub 

End Class 

La variable FirstName se declara en el nivel de clase y en el método ExampleMethod. Dentro ExampleMethod sólo el local o en sombras, se utiliza la variable a menos que explícitamente referencia la variable de nivel de clase con la palabra clave Me:

Public Class ExampleClass 

    Private FirstName As String 

    Public Sub ExampleMethod() 
    Dim FirstName As String 
    FirstName = "Stefan" 
    Me.FirstName = "Carl Gustav" 
    End Sub 

End Class 
0

Me es un objeto de la clase actual

1

Bueno, A pesar de que tiene cosas, hay eventos que esta palabra clave ME ofrece problemas

Por ejemplo, si usted tiene una forma y se invoca de otra forma como

Dim myform as new frmXXX 

myform.PrimaryKey=123 

muform.show 

a menos que se complete el método Show, los objetos en el método de clave primaria no tienen referencia a la palabra clave ME y proporcionan un error.

En el PrimaryKey método propiedad writeonly primarykey conjunto ....

me.txtPrimaryKey.text="value" 

proporcionará un error a menos que la forma no se muestra.

Cuestiones relacionadas