Visual Studioでデバッグしていると以下のようなダイアログが表示されることがあります。
ステップイン要求により、プロパティまたは演算子の自動的なステップオーバーが発生しました。
この動作は、「関数にステップイン」を選択するか、または「プロパティおよび演算子をステップオーバーする」チェックボックスをオフすることによって実行される行のコンテキストメニューでオーバーライドできます。
今後も自動的なステップオーバーが発生したときに通知を受け取りますか?
言葉だけでは、理解不能で思考が凍結するのですが、プロパティや演算子は飛ばすという意味です。
class Program { static void Main(string[] args) { Point p = new Point(); if (p.X != 0) { Console.WriteLine("Hello World!"); } } } public struct Point { public int X { set; get; } public int Y { set; get; } }
p.X != 0
というPointのXという名前のプロパティにアクセスしようとしたところで、ダイアログが表示されます。
Xというプロパティの中身(get)まではステップインしません。ということでダイアログが表示されています。
このダイアログ自体は、今後表示するかしないかだけですので、プロパティが飛ばされてますよというのを認識したら、Noで良いです。
これまで私はよくわかんないけどNoでいいやとしてましたが、それはそれで良いかと。
では、ステップオーバーしたくない場合は、
Visual Studioのオプションを開き、デバッグ-全般より、
「プロパティおよび演算子をステップオーバーする」のチェックを外します。
すると
私の環境では、プロパティ自体にブレークポイントが貼られていれば、「プロパティおよび演算子をステップオーバーする」にチェックが入っていてもいなくても、デバッガはそこで停止するようです。
基本はチェックしてステップオーバーしても支障がないかなと思われます。
が、以下のような複雑なプロパティもステップオーバーされてしまうので、注意です。
プロパティ内部での挙動を見落とす可能性もあります。
と言っても実際のデバッグをしているとプロパティはどちらかというとステップオーバーしたいところではあります。
public struct Point { private int valueX; public int X { set { valueX = value; } get { return valueX; } } public int Y { set; get; } }