阻止Visual Studio 2019不断评估ToString()

时间:2019-04-16 17:30:07

标签: c# visual-studio visual-studio-2019

要重现我的问题:

  1. 将以下代码粘贴到Visual Studio 2019中的新C#.NET Framework控制台应用程序中。
  2. 在行_Bar = null上放置一个断点
  3. 开始调试
  4. 在断点处,将鼠标悬停在_Bar上以查看其值
  5. 走过去
  6. 走过去
  7. 引发异常

Visual Studio似乎正在不断评估ToString()方法,即使将_Bar设置为FooBar,也导致null始终具有值 using System; namespace FooBar { class Program { static void Main(string[] args) { new Foo(); } class Foo { string _Bar; public string Bar { get { if (_Bar == null) { _Bar = "FooBar"; } return _Bar; } set { _Bar = value; } } public Foo() { _Bar = null; if (_Bar != null) { throw new Exception("_Bar is not null."); } } public override string ToString() { return Bar; } } } } 。有办法阻止它吗?此问题在Visual Studio 2013中无法重现。我正在使用Visual Studio Community 2019版本16.0.1。

run:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at mypackage.temp_conv.ConvertActionPerformed(temp_conv.java:133)
at mypackage.temp_conv.access$000(temp_conv.java:12)
at mypackage.temp_conv$1.actionPerformed(temp_conv.java:47)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

1 个答案:

答案 0 :(得分:0)

该问题的解决方案是在常规调试选项中禁用属性评估

enter image description here

编辑:如果您没有带有属性的“监视”窗口,则可以解决该问题。