これは私に多くのことを気にして私は(プロVS 2008)インテリセンスと組み合わせたとき、私は愚かなバグを書く見つける:C#で暗黙の "this"を無効にするにはどうすればよいですか?
class Foo
{
public Foo(bool isAction)
{
this.IsAction = IsAction;
}
public bool IsAction { get; private set; }
}
あなたはそれをキャッチしましたか? IsActionが決して変更されずにバグが発生するまで、私は確かにしなかった。
インテリセンスは何とかプロパティFoo.IsAction
は関係なく、コンストラクタ入力の常に偽であることを意味し、私にとって「IsAction」を「isA<tab>
」に変換されます。ただ素晴らしい。
私は特に「暗黙的にthis
」(正式な名前があるかどうかわかりません)を嫌い、私はそれを仮定しないようにしたいと思います。 これを行う方法はありますか?これは、同じクラスの静的メソッドを呼び出す場合にも適用されます。
また、この小さな問題を回避する命名規則はありますか。プロパティは "IsAction"のままでなければならないので、コンストラクタのパラメータ名の規則にする必要があります。奇妙なことに、正確に一致するスペルで名前を付けると、this.IsAction = IsAction;
が正しく機能します。
問題は大文字と小文字は区別されませんが、意味はthis
です。今私はそれについて考えて、これはまた、VS 2008のプロの質問のC#よりも。私はthis
せずに、すでに書かれたコードと一緒に暮らすことができますが、私はNoldorinの答えは私が考えるようになった
に伝えることを意味することなく、新しいコードを記述する必要はありません。
私はそれについて考えることができました。これはまた、VS2008の質問の多くはC#です。私はすでにthis
なしで書かれたコードで暮らすことができます(ただし、私がそこにいたら変更します)。しかし、Intellisenseにそれをやめさせることを意味する新しいコードを書いてはいけません。 Intellisenseにそれを打ち明けるように指示できますか?
これはこの暗示の問題ではありません。あなたがそれをオフにすることができたとしても(私はあなたができないと思う)、私はあなたが数分でそれを再びオンにすると確信しています。 –
私はそうは思わないでしょう。私は私がそれを憎んでいると言いましたか? :) –
私はそれがなくてもあなたのコードを見たいと思っています。プライベートでも保護されているメソッドにも "this"で始まるすべての呼び出しがあります...良いクラスには、目標を達成するための多くの小さなリファクタリングと表現方法があります。あなたはどこにでも "これ"でいっぱいになるでしょう。 –