В Интернете я вижу много кода, который использует это. получить доступ к локальным членам класса, как это:
private String _whatever;
public String Whatever
{
get
{
return this._whatever;
}
set
{
this._whatever = value;
}
}
public void DoSomething()
{
String s = this.Whatever;
this.DoSomething();
}
(не ожидайте, что код сделает что-то разумное. Я просто хотел показать несколько различного использования для "этого".)
Интересно, почему сделать это? Добавить больше ясности к источнику?
Или это - просто трата пространства?
о чем следует подумать:
компилятору все равно, и те из нас, кто работает за вами, будут точно знать, о чем вы, даже если мы не знакомы со структурами ваших классов
{{1} }В StyleCop есть правило, требующее этого - люди, похоже, просто используют его ;)
Это дело вкуса. Некоторые разработчики обычно используют this
, чтобы показать, что ссылающийся объект является внутренним объектом класса. Это просто синтаксический сахар. Также это зависит от некоторых соглашений об именовании в проекте (например, начинать каждое имя поля с подчеркивания).
Странно, об этом никто не упоминает: это так хорошо работает с IntelliSense. Типа "это". и появится список допустимых имен участников. Мне не потребовалось много времени, чтобы оправдать это словами «ну, это делает область действия идентификатора очевидной».
Использование this
в этом контексте необязательно, но помогает устранить неоднозначность. Генераторы кода всегда будут использовать здесь это
, что намного проще, чем выяснять, необходимо ли это (что бывает редко).
Программисты используют это как вопрос вкуса.
Это необходимо для обработки следующей возможной ситуации:
private String value;
public String Whatever
{
get
{
return this.value;
}
set
{
this.value = value;
}
}
Фактически, это.
широко используется в ситуациях, подобных приведенному ниже примеру:
struct MyStruct
{
private int val1;
private int val2;
public MyStruct(int val1, int val2)
{
this.val1 = val1;
this.val2 = val2;
}
}
Использование this.
по возможности делает ваш код более ясным и исключает следующую возможную ошибку:
private int myVar;
private void doSmth(int myVar)
{
// Some code here ...
myVar = 5; // Are you sure this is one you want to modify?
// Some code here ...
}
Однако это не строгое правило и, вероятно, связано с личным стилем кодирования.
Все сводится к личным предпочтениям и передовым методам.
В большинстве ситуаций это просто не имеет значения, но может иметь значение, когда у вас есть параметр с тем же именем, что и личное поле (что в любом случае указывает на неправильное соглашение об именах).
С моей личной точки зрения, любая ссылка на переменную на параметр, поле или почти на что угодно должна быть достаточно ясной без квалификатора "this" ... только если это не так, и вы не можете изменить его, чтобы сделать это Итак, я использую это.
Это сделано для большей ясности, в частности, для устранения неоднозначности параметров из членов экземпляра. Лично я думаю, что
В общем, это вопрос личного мнения (хотя, как и во всем остальном, вы должны быть последовательны и согласны со своими коллегами).
IMO:
this._member
избыточно
, тогда как
this.Property
допустимо.
У каждого из программистов, которые пишут это
для отличных данных класса, могут быть свои причины. Иногда из-за того, что они к этому привыкли, в других случаях из-за того, что этого требовал стандарт кодирования проекта, возможно, они используют такой код инструментальных форматов ...
Кроме того, если вы не делаете разницы между переменные-члены и параметры или локальные переменные, как в вашем примере с подчеркиванием, это полезно. Просто вопрос стиля.