get访问器中的当前属性值

时间:2011-07-18 04:16:12

标签: c# properties

如何在get accessor块运行时获取当前属性值? 我试图处理这样的事情:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? birthDate
{
    get
    {
        return CommonClass.GetDT(birthDate);
    }
    set
    {
        birthDate = CommonClass.GetDT(value);
    }
}

public class CommonClass
{    
    public static DateTime? GetDT(DateTime v)
    {
        if (v == DateTime.MinValue)
        {
            return null;
        }
        else
        {
            return v;
        }
    }
    public static DateTime? GetDT(DateTime? v)
    {
        if (!v.HasValue)
        {
            return null;
        }
        else
        {
            return v;
        }
    }
}

但这段代码已被粉碎。但是如果你查看微软的教程,你可以看到一些允许使用自我属性值的样本:

public string Name 
{
   get 
   {
      return name != null ? name : "NA";
   }
}

Here

2 个答案:

答案 0 :(得分:4)

变量和方法名称区分大小写,这意味着“名称”和“名称”不同。

private string name;   // the name field
public string Name   // the Name property
{
   get 
   {
      return name; 
   }
}

所以改变你的

private DateTime? birthDate
public DateTime? BirthDate
{
    get
    {
        return CommonClass.GetDT(birthDate);
    }
    set
    {
        birthDate = CommonClass.GetDT(value);
    }
}

答案 1 :(得分:1)

属性的get和set访问器只是方法。它们相当于: -

public string get_Name()
{
    ...
}

public void set_Name(string value)
{
    ...
}

一旦你想到这些,你会发现他们并没有什么特别之处。没有特殊的“自我”或“当前价值”。

在第二个代码示例中,必须有一个名为“name”的字段,用于存储属性的值。这个,而不是别的,是该物业的“当前价值”。