Это меня очень беспокоит, и я нахожу, что пишу глупые ошибки в сочетании с Intellisense (VS 2008 Pro):
class Foo
{
public Foo(bool isAction)
{
this.IsAction = IsAction;
}
public bool IsAction { get; private set; }
}
Вы поймали это? Я, конечно, не сделал, пока IsAction никогда не изменился, вызывая ошибки.
Intellisense каким-то образом преобразовал "isA<tab>
" в "IsAction" для меня, что означает, что свойство Foo.IsAction
равно всегда false независимо от входных данных конструктора. Просто великолепно.
Я должен сказать, что я особенно ненавижу "неявное this
" (я не знаю, имеет ли оно формальное имя), и я хотел бы отключить его, чтобы оно никогда не принималось. Есть ли способ сделать это? Это также относится к вызову статических методов того же класса.
В качестве альтернативы, какие соглашения об именах позволяют избежать этой маленькой проблемы? Свойство должно оставаться "IsAction", поэтому оно должно быть соглашением по имени параметра конструктора. Как ни странно, если я назову его с точно совпадающим написанием, то this.IsAction = IsAction;
сработает правильно.
Проблема не в регистрозависимых языках, а в неявности this
. Теперь, когда я думаю об этом, это также больше вопрос VS 2008 Pro, чем C #. Я могу жить с кодом, уже написанным без this
, но я не хочу писать новый код без него, что означает сообщение In
Ответ Нолдорина заставил меня задуматься.
Теперь, когда я думаю об этом, это также больше вопрос VS 2008, чем C #. Я могу жить с кодом, уже написанным без this
(хотя я изменяю его, если я там слоняюсь по кругу), но я не хочу писать новый код без него, что означает приказ Intellisense прекратить это делать. Могу ли я сказать Intellisense, чтобы он сбил его?