0

現在のページのクエリ文字列をキャプチャするプロパティを宣言しました。クエリ文字列変数と同じプロパティ名を持つクラスもあります。以下は私のデバッグ環境です。

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

            return null;
        }
    }

これが私が持っていると期待するものです。これは、オブジェクトp.ParishIdを検査したときに得たものですp

ここに画像の説明を入力

しかし、それはクエリ文字列変数の値を示しています。これは私がParishIdにマウスを置いて得たものです

ここに画像の説明を入力

新しく割り当てられた Guid が表示されないのはなぜですか?

4

1 に答える 1

2

デバッガーは、現在のインスタンスのプロパティを現在のスコープに従って呼び出します。p.ParishId- は instance のプロパティですpParishId- は、たまたまスコープになったもののプロパティです。これは、あなたの場合は から値を取得するクラスですQueryString

アップデート:

あなたが何を参照したいのかわかりません。マウスを識別子の上に移動すると、デバッガーは、その識別子を Watches リストに追加したときと同じことを行います。つまり、現在のスコープで解決します。作成時にインスタンスのフィールド/プロパティを割り当てる C# 機能は、単なる言語構文糖衣です。ParishIdinstance のプロパティを検査するにはp、評価するp.ParishIdか、pクラスのコード内にいる必要があります。

于 2012-12-05T22:51:29.980 に答える