public struct dfInfoPic
{
    decimal _ID;
    public decimal ID
    {
        get { return
 _ID; }
        set { _ID = value; }
    }
}    private T test<T>(T df,string property) where T : struct
    {
        df.GetType().GetProperty(property).SetValue(df, 3m, null);
        return df;
    }        dfInfoPic df = new dfInfoPic();
        df.ID = 1m;
        Response.Write(df.ID);
        Response.Write("<br/>");
        object sid = df;
        sid.GetType().GetProperty("ID").SetValue(sid, 2m, null);        Response.Write(((dfInfoPic)sid).ID);
        Response.Write("<br/>");
        Response.Write(this.test<dfInfoPic>(df, "ID").ID);
预计结果应该是:
1
2
3
但现在的运行结果却是
1
2
1想问一下,两行红色部份的代码有什么不同?