奇怪的新实例创建语法行为

时间:2012-12-05 22:46:26

标签: c# asp.net .net visual-studio-debugging

我已经声明了一个属性来捕获当前页面的查询字符串。我还有一个与querystring变量具有相同属性名的类。以下是我的调试环境

   private Guid? ParishId
    {
        get
        {
            Guid guid;
            if (Guid.TryParse(Request.QueryString["id"], out guid))
            {
                return guid;
            }

            return null;
        }
    }

这是我期望的p.ParishId,这是我在检查p对象时得到的

enter image description here

但是它显示了querystring变量的值。我把鼠标放在了ParishId

enter image description here

为什么没有看到新指定的Guid?

1 个答案:

答案 0 :(得分:2)

调试器根据当前范围调用您当前所在实例的属性。 p.ParishId - 是实例p的属性,ParishId - 是任何恰好是范围的属性,在您的情况下是从{{1}获取值的类}。

<强>更新

我不确定你想要什么样的参考。当您将鼠标移到标识符上时,调试器会执行与将该标识符添加到Watches列表时相同的操作,即在当前范围内解析它。在创建时分配实例的字段/属性的C#功能只是语言语法糖。要检查实例QueryString的{​​{1}}属性,您需要评估ParishId或在p类的代码内。