2015-10-17 5 views
15

Итак, у меня есть довольно простой класс с полем Id, и в конструкторе можно установить Id.Действительно ли это упрощение?

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

IDE0003 хочет, чтобы я удалил this, с сообщением «Имя может быть упрощено», правильно?

Это кажется менее понятным для меня, а также позволяет легко обвести ошибку обсадной колонны в id = id.

enter image description here

+15

Ну, я думаю, вы уже сказали все: Не все «упрощение» также является «уточнение» .. – TaW

+1

я думаю, что они оба компилировать в одно и то же. поэтому вы просто упростите то, что больше ничего не написали. –

+5

Хм, такие вопросы задают только программисты, которые используют черный фон окна редактора. Да, эта лампочка довольно заметна. Гораздо проще не беспокоить его, когда фон светлый :) Конечно, это «упрощение», меньше кода. Но это не имеет никакого значения во время выполнения, и это, безусловно, не поможет вам использовать автозаполнение. –

ответ

7

this ключевое слово почти всегда является необходимым, см When do you use the "this" keyword?.

позволяет ошибка корпус легко привести к id = id

Это даст еще одно предупреждение по себе:

переуступка, осуществленная с одной переменной; Вы хотели назначить что-то еще?

+2

C# чувствителен к регистру.В этом случае было бы действительно упростить удаление этого. –

4

Если вы используете General Naming Conventions то this ключевое слово является излишним, поскольку параметр должен быть id и имущество должно быть основано на IdNaming Guidelines. Так, кажется, ясно:

public int Id 
{ 
    get; 
    private set; 
} 


public VSOMessage(int id) 
{ 
    Id = id; 
} 

Пожалуйста, обратите внимание, что сами принципы не говорят, использовать или не использовать this ключевое слово, но потому, что C# является чувствителен к регистру, было бы упрощение удалить this ключевое слово, но если вы не используетеСоглашения об именовании, то вы можете назвать недвижимость id вместо Id, поэтому в таких случаях вы должны использовать ключевое слово.

+2

Ключевое слово ['this'] (https://msdn.microsoft.com/en-us/library/dk1507sz.aspx) явно полезно для этого сценария:« Чтобы квалифицировать членов, спрятанных схожими именами ». Кроме того, не каждая переменная-член является свойством, а некоторые свойства могут иметь опорную переменную (особенно полезную для неизменяемых объектов). Кроме того, использование 'this',' base' и имя класса для статических методов улучшает читаемость и затвердевает намерение. – ShooShoSha

29

У этого другого вопроса есть ответ, в котором говорится, что вы можете настроить редактор для удаления поведения. Лично мне нравится «это»

Tools > Options > Text Editor > C# > Code Style and check Qualify member access with 'this' 

Visual Studio 2015 - Change Light Bulb, Quick Action settings

+6

Использование ключевого слова 'this' явно показывает, где существует переменная. Если это не префикс 'this',' base' или имя класса (для статических методов), область видимости переменной локальна и глобальна как метод. Это делает намерение и читаемость более ясными, чем его упущение. – ShooShoSha