Это действительно упрощение?
Итак, у меня есть довольно простой класс с полем Id
, а в конструкторе можно установить Id
.
Обычно я использую this
, чтобы четко идентифицировать свойство класса, а не аргумент метода. Для меня это кажется яснее.
IDE0003 хочет, чтобы я удалил this
, с сообщением "Имя можно упростить", правильно ли это?
Это кажется мне менее понятным, а также позволяет ошибке обсадной колонны легко привести к id = id
.
![введите описание изображения здесь]()
Ответы
Ответ 1
Ключевое слово this
почти всегда не нужно, см. Когда вы используете ключевое слово "his" ?.
позволяет легко обвести ошибку обсадной колонны в id = id
Это даст другое предупреждение самостоятельно:
Назначение одной переменной; вы имели в виду присвоить что-то еще?
Ответ 2
В этом другом вопросе есть ответ, в котором говорится, что вы можете настроить редактор для удаления поведения. Лично мне нравится "this"
Tools > Options > Text Editor > C# > Code Style and check Qualify member access with 'this'
Visual Studio 2015 - смените лампочку, настройки быстрого действия
Ответ 3
Если вы используете General Naming Conventions
, то ключевое слово this
является избыточным, поскольку параметр должен быть id
, а свойство должно быть id
на основе Naming Guidelines
. Так что кажется ясным:
public int Id
{
get;
private set;
}
public VSOMessage(int id)
{
Id = id;
}
Обратите внимание, что сами рекомендации не говорят, использовать или не использовать ключевое слово this
, но поскольку С# чувствителен к регистру, было бы проще удалить ключевое слово this
, но , когда вы не используете Соглашения об именах, тогда вы можете называть свойство id
вместо id
, поэтому в таких случаях следует использовать ключевое слово this
.
Ответ 4
Если вы хотите предотвратить предупреждение в коде, а не обновлять параметры Visual Studio, используйте аннотацию данных SuppressMessage, которая предотвратит предупреждение.
Это выглядит примерно так:
[SuppressMessage("Reason #Enter whatever you'd like", "ID, must match what intellsense is showing it looks something like this: IDE0001", Justification = "(optional, your own description")]
Вот точный пример вашей "этой" переменной ситуации.
[SuppressMessage("IntelliSenseCorrection", "IDE0003", Justification = "Allowing this variable to consistency/readability of code.")]