Использовать ключевое слово 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 - объект текущего класса