Usando - me (VB.NET) keyword is it required or not?

estou actualmente a trabalhar numa aplicação web (ASP.NET) e algumas das páginas que estão incluídas foram criadas por outros programadores, o que eu notei é, eles não estão usando " Me "(VB.NET) " keyword to access controls, while on my side I used it in every page that i've created. Apenas para dar mais informações, a aplicação web funciona em um Framework.NET 2.0. Alguém por aí que me ajude a entender é necessário usar-me ou não? Quais são as vantagens e desvantagens na código completo, se me estás a usar? Pode melhorar o desempenho da aplicação?

Qualquer ajuda é muito apreciada. Obrigado antecipadamente.

Author: KG Sosa, 2009-01-09

7 answers

Pelo que eu entendo, é puramente preferência, mas pode desambiguar entre Propriedades e variáveis/parâmetros com escopo local. Algumas pessoas incluem-no religiosamente por hábito. Assim, se introduzissem uma variável local com o mesmo nome, nada se quebraria.

Diga que tem um método definido {[[0]} e a classe também tem um String Chamado MyString. A única maneira de referenciar a classe versão de MyString é usar Me.MyString. Assim, você diz Me.MyString = MyString e o compilador sabe o que quer.

 15
Author: lc., 2009-01-09 08:34:30

Em alguns casos é necessário, vamos levar por exemplo uma variável no escopo de uma classe, e um parâmetro sendo passado para uma sub-rotina que tem um nome equivalente como assim:

Private theString As String

Private Sub Setup(ByVal theString As String)
   Me.theString = theString
End Sub
Traz as coisas para o contexto correto para permitir que as tarefas sejam executadas corretamente.

No seu caso, alguns programadores tendem a fazê-lo para saberem de onde vem a variável, algo que os meus colegas de trabalho também farão. Também é comum porque intellisense vai trazer à tona a sua lista de variáveis local, se escreverem "Me".", algo que normalmente não faço, embora provavelmente deva fazer mais.

 6
Author: Kezzer, 2009-01-09 09:47:39

Usar a palavra-chave me não afecta o desempenho. É apenas uma questão de estilo. Acho que melhora a clareza do teu código se o usares. Então você sabe à primeira vista que o membro usado pertence ao objeto em si e não é uma variável local, por exemplo.

A palavra-chave Me é usada sempre que queremos que o nosso código se refira aos membros (métodos, propriedades, etc.)...) dentro do objeto atual. A palavra-chave Me é análoga à esta palavra-chave nas línguas C++ e c#. A palavra-chave Me é normalmente opcional , uma vez que qualquer chamada de método é assumida como referente ao objecto actual, a menos que explicitamente indicado em contrário.

A excepção é quando se está a usar variáveis sombreadas . Uma variável sombreada é uma variável ao nível do procedimento com o mesmo nome que uma variável da classe. Por exemplo:

Public Class ExampleClass

  Private FirstName As String

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

End Class

O primeiro nome da variável é declarado ao nível da classe e dentro do método ExampleMethod. A título de exemplo, apenas o local, ou shadowed, variable is used unless we explicitly reference the class-level variable with the Me keyword:

Public Class ExampleClass

  Private FirstName As String

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

End Class
 3
Author: splattne, 2009-01-09 10:51:40

A palavra-chave Me é opcional da mesma forma que tem a opção de qualificar completamente um espaço de nomes, mesmo que o tenha importado no topo da classe.

No entanto, se você tem um controle sobre o formulário com o mesmo nome que outro objeto em outro espaço de nomes importado, pode ser essencial.

 1
Author: John, 2009-01-09 08:04:44
Acho que a IU controla a preferência do utilizador.

Mas eu prefiro fortemente o uso de " Eu " especialmente se você estiver usando propriedades da classe apenas no caso de haver algum código que precisa ser executado antes de acessar essa variável.

Exemplo

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

Neste caso há uma diferença entre usá-lo com ou sem a palavra-chave "Eu".

 1
Author: MOZILLA, 2009-01-10 13:14:28

Bem, mesmo que tenha coisas, há eventos que esta palavra-chave me fornece problemas

Por exemplo, se tem uma forma e a invoca de outra forma como

Dim myform as new frmXXX

myform.PrimaryKey=123

muform.show

A menos que o método Mostrar esteja completo, os objectos do método primarykey não têm qualquer referência à palavra-chave ME e fornecem um erro.

No método da chave primária propriedade writeonly primarykey definir....

me.txtPrimaryKey.text="value"

Irá fornecer um erro a menos que o formulário não seja mostrado.

 1
Author: SLPx, 2012-06-10 04:10:38

Eu é um objecto da classe actual

 0
Author: Dhiraj, 2010-10-27 18:07:28