【问题标题】:Skip expression bodied property in debugger在调试器中跳过表达式主体属性
【发布时间】:2016-05-04 06:48:45
【问题描述】:

C# 中的表达式体属性是否有类似 [DebuggerStepThrough] 的属性?

例如我想跳过代码

public Byte ByteArray => Builder.CreateArray();

[DebuggerStepThrough] 不能应用于属性。 C# 团队在 C# 6.0 中是否提供任何其他解决方案?

【问题讨论】:

  • 你试过了吗?

标签: c# c#-6.0


【解决方案1】:

C# 9.0:仍然没有运气。但是可以使用表达式主体:

public Byte ByteArray
{
    [DebuggerStepThrough]
    get => Builder.CreateArray();
}

或与单行代码相同:

public Byte ByteArray {[DebuggerStepThrough] get => Builder.CreateArray();}

【讨论】:

    【解决方案2】:

    DebuggerStepThrough 对表达式主体属性无效,因为:

    [DebuggerStepThrough]
    public Byte ByteArray => Builder.CreateArray();
    

    不编译。然而,这确实:

    public Byte ByteArray
    {
        [DebuggerStepThrough]
        get
        {
            return Builder.CreateArray();
        }
    }
    

    还有其他调试器属性,例如 DebuggerHiddenDebuggerNonUserCode,但它们不会禁用单步执行。

    您可以在调试选项中为所有属性禁用它,但 IMO 无法仅为表达式主体属性配置它。

    【讨论】:

    • @只询问这些属性?
    • @Ask 除非您可以将属性附加到整个类,否则解决方法与 i3arnon 显示的完全一样,不要使用表达式正文语法。
    • @Ask 我认为 i3arnon 的回答很清楚你的澄清。答案是“不,他们没有,您必须使用 6.0 之前的语法来创建属性”。
    猜你喜欢
    • 2020-06-23
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多