Использовать ключевое слово Me (VB.NET) требуется или нет?

В настоящее время я работаю над веб-приложением (ASP.NET), а некоторые из включенных страниц создаются другими программистами, я заметил, что они не используют ключевое слово "Me (VB.NET)" контроля доступа, а на моей стороне я использовал его на каждой странице, которую я создал. Чтобы предоставить дополнительную информацию, веб-приложение работает на платформе .NET Framework 2.0. Кто-нибудь, кто поможет мне понять, должен ли я использовать Меня или нет? Каковы преимущества и недостатки всего кода, если вы используете меня? Может ли это улучшить производительность приложения?

Любая помощь очень ценится. Спасибо заранее.

Ответ 1

Из того, что я понимаю, это чисто предпочтение, но он может устранить неоднозначность между свойствами и локальными переменными/параметрами. Некоторые люди включают это по религиозному признаку. Таким образом, если они должны были ввести локальную переменную с тем же именем, ничто не сломалось бы.

Скажем, у вас есть метод, определенный DoSomething(MyString As String), и класс также имеет String, называемый MyString. Единственный способ ссылаться на версию class MyString - использовать Me.MyString. Таким образом, вы говорите Me.MyString = MyString, и компилятор знает, что вы хотите.

Ответ 2

В некоторых случаях требуется, допустим, например, переменную в области видимости класса, а параметр передается подпрограмме, которая имеет эквивалентное имя:

Private theString As String

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

Это приводит вещи в правильный контекст, чтобы обеспечить правильное выполнение заданий.

В вашем случае некоторые разработчики просто стремятся сделать это, чтобы они знали, откуда происходит переменная, и мои товарищи по работе. Это также обычно делается потому, что intellisense выведет свой локальный список переменных, если они набирают "Я". Я обычно этого не делаю, хотя, вероятно, я должен сделать больше.

Ответ 3

Использование ключевого слова Me не влияет на производительность. Это чисто вопрос стиля. Я думаю, что это улучшает ясность вашего кода, если вы его используете. Итак, вы на первый взгляд знаете, что используемый элемент принадлежит самому объекту, и он не является локальной переменной, например.

Ключевое слово Me используется в любое время, когда мы хотим, чтобы наш код ссылался на членов (методы, свойства,...) внутри текущего объекта. Ключевое слово Me аналогично этому ключевому слову на языках С++ и С#. Ключевое слово Me обычно необязательно, так как любой вызов метода считается ссылкой на текущий объект, если явно не указано иначе.

Исключением является использование затененных переменных. Затененная переменная является переменной на уровне процедуры с тем же именем, что и переменная класса. Например:

Public Class ExampleClass

  Private FirstName As String

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

End Class

Переменная FirstName объявляется на уровне класса и в методе ExampleMethod. Внутри метода ExampleMethod используется только локальная или теневая переменная, если мы явно не ссылаемся на переменную уровня класса с ключевым словом 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

Ответ 4

Я думаю, что для пользовательского интерфейса очень сильно зависит предпочтение пользователя.

Но я настоятельно рекомендую использовать "Me", особенно если вы используете свойства класса только в том случае, если есть какой-то код, который нужно выполнить, прежде чем вы получите доступ к этой переменной.

Пример

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

В этом случае существует разница между его использованием с ключевым словом "Me" или без него.

Ответ 5

Ключевое слово Me является необязательным, так как у вас есть возможность полностью квалифицировать пространство имен, даже если вы импортировали его в верхней части класса.

Однако, если у вас есть элемент управления в форме с тем же именем, что и другой объект в другом импортированном пространстве имен, это может быть важно.

Ответ 6

Ну, хотя у него есть вещи, есть события, которые задают это ключевое слово ME.

Например, если у вас есть форма и вы вызываете ее из другой формы, например

Dim myform as new frmXXX

myform.PrimaryKey=123

muform.show

если метод Show не завершен, объекты в методе primarykey не имеют ссылки на ключевое слово ME, и они предоставляют ошибку.

В методе PrimaryKey свойство writeonly primarykey установлен....

me.txtPrimaryKey.text="value"

предоставит ошибку, если форма не показана.

Ответ 7

Me - объект текущего класса