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.7 answers
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.
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.
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
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.
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".
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.
Eu é um objecto da classe actual