C # это все? - PullRequest
       65

C # это все?

3 голосов
/ 11 июля 2009

Я решил использовать this.variableName при обращении к полям string / int и т.д .. Будет ли это включать ArrayList, ListBox и т. Д. Тоже? Как:

private ListBox usersListBox;
private void PopulateListBox()
{
  this.usersListBox.Items.Add(...);
}

... или нет?

А что с классами?

MyClass myClass;
private void PlayWithMyClass()
{
  this.myClass = new MyClass();
  this.myClass.Name = "Bob";
}

? Это выглядит немного странно для меня. И я не знаю, должен ли я использовать this.PublicProperty или только частные поля.

Я не на 100% использую терминологию C #, но, надеюсь, то, что я сказал, имеет смысл.

Ответы [ 7 ]

6 голосов
/ 11 июля 2009

Раньше я делал такие вещи, но теперь я обнаружил, что IDE довольно умны, чтобы дать мне визуальную индикацию того, что я имею дело с переменной-членом. Я использую «this», только когда необходимо отличить переменную-член от параметра с тем же именем.

4 голосов
/ 11 июля 2009

Команда this. позволит вам вызывать все, что находится в области видимости, в том же классе, что и вы. Вы можете получить доступ к закрытым и общедоступным переменным, и поскольку все в c # является объектом, вызывающим класс, это то же самое, что и вызов строки.

Вам не нужно использовать this в вашем коде, если вы не хотите, как это подразумевается в c #, если только параметр метода и глобальная переменная не совпадают.

2 голосов
/ 11 июля 2009

Меньше значит больше. Меньше текста для разбора более читабельно.

Я использую это в конструкторах, поскольку мои параметры и переменные-члены имеют одинаковые имена (мне не нравится помечать переменные-члены символом _).

public class A
{
  int a;
  public A(int a) 
  {  
    this.a = a;
  }
}
1 голос
/ 11 июля 2009

Если ваш класс достаточно мал и хорошо выполняет одну задачу, обычно вам не нужно добавлять this для удобства чтения.

Если вы можете легко прочитать весь класс, какой смысл? Было бы больше печатать и загромождать код, таким образом, возможно, ухудшить читабельность

0 голосов
/ 11 июля 2009

Поскольку this. является неявным, его нужно использовать только при неоднозначности между переменными класса и локальными переменными с одинаковым именем.

Приведенные вами примеры будут работать так, как вы написали тогда, или вот так:

private ListBox usersListBox;
private void PopulateListBox()
{
    usersListBox.Items.Add(...);
}

MyClass myClass;
private void PlayWithMyClass()
{
    myClass = new MyClass();
    myClass.Name = "Bob";
}

Это просто вопрос личных предпочтений. Если вы выбираете одно над другим, старайтесь быть последовательными.

0 голосов
/ 11 июля 2009

Это не более чем ключевое слово, указывающее на текущий экземпляр. В функции this.foo обычно совпадает с foo.

Как MSDN говорит вам:

Это ключевое слово относится к текущему экземпляру класса.

Страница об этом ключевом слове содержит гораздо больше информации.

0 голосов
/ 11 июля 2009

с использованием ключевого слова this может относиться к любому экземпляру объекта. Таким образом, это означает, что вы можете использовать его для ссылки на экземпляр класса (например, usersListBox, myClass и т. Д.).

Это прекрасно.

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

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

...