内容简介:延迟计算属性的值,应该很多小伙伴都经常使用。比如在属性的但这样的写法存在一个很大的问题——如果你使用 Visual Studio 调试,当你把鼠标划到对象的实例上的时候,属性就会立刻开始进行初始化。而此时对你的代码来说可能就过早初始化了。我们不应该让调试器非预期地影响到我们程序的执行结果。本文介绍如何避免调试器不小心提前计算本应延迟计算的值。
延迟计算属性的值,应该很多小伙伴都经常使用。比如在属性的 get
方法中判断是否已初始化,如果没有初始化则立即开始初始化。
但这样的写法存在一个很大的问题——如果你使用 Visual Studio 调试,当你把鼠标划到对象的实例上的时候,属性就会立刻开始进行初始化。而此时对你的代码来说可能就过早初始化了。我们不应该让调试器非预期地影响到我们程序的执行结果。
本文介绍如何避免调试器不小心提前计算本应延迟计算的值。
方法是在属性上添加一个特性 DebuggerBrowsableAttribute
。
private Walterlv _foo; [DebuggerBrowsable(DebuggerBrowsableState.Never)] public Walterlv Walterlv => _foo ?? (_foo = new Walterlv()); public bool IsInitialized => !(_foo is null);
当指定为不再显示的话,在调试器中查看此实例的属性的时候就看不到这个属性了,也就不会因为鼠标划过导致提前计算了值。
当然,如果你希望为你的类型定制更多的调试器显示方式,可以参考我的另一篇博客:
参考资料
以上所述就是小编给大家介绍的《.NET/C# 避免调试器不小心提前计算本应延迟计算的值》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- GNU 调试器 GDB 10.1 发布
- GNU 调试器 GDB 8.3 发布
- GNU 调试器 GDB 8.3 发布
- 浅析常见 Debug 调试器的安全隐患
- RubyMine 2018.1 EAP 发布,升级调试器
- dlua 0.1 发布,gdb 风格的 lua 调试器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JS 压缩/解压工具
在线压缩/解压 JS 代码
html转js在线工具
html转js在线工具