【问题标题】:How does one break inside a default c# getter or setter? [duplicate]如何打破默认的 c# getter 或 setter? [复制]
【发布时间】:2014-02-19 02:41:14
【问题描述】:

我正在调试一些东西,我需要知道什么时候设置了一些东西。似乎没有明确的设置,如 x = 5。那么无论如何要确保它没有被设置?特别是通过破坏默认设置器?

如果问题不够清楚:

public FooClass
{ 

    FooClass() { }

    public int x { get; set; } //How do I break in the setting of this property?

}

谢谢

【问题讨论】:

  • 你有没有试过右击属性所在的行并在那里设置断点?
  • 是的,它不会被击中。但是,这可能是因为它根本没有设置。除非您当然知道在该行设置断点应该有效。
  • 你可以在这个thread找到说明

标签: c# debugging getter-setter


【解决方案1】:

如果您的 getter 或 setter 中有代码,您可以在此处中断,以便为该属性创建私有成员。

private int _x;
public int X {
    get { 
        return _x;
    }
    set {
        _x = value;
    }
}

这将允许您在 return _x 和 _x = value 行上放置中断。

【讨论】:

  • 完美!不知道为什么我没想到!
【解决方案2】:

您可以强制导致调试器中断:

using System.Diagnostics;

Debugger.Break();

您可能必须使用显式的支持字段来扩展您的 auto 属性:

public class FooClass {
    private int _x;

    public int X {
        get {
            return _x;
        }
        set {
            _x = value;
            Debugger.Break();
        }
    }
}

..或者,只需扩展属性(如上)并自己在其中放置一个断点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-23
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2015-08-31
    相关资源
    最近更新 更多