get访问器中的当前属性值

本文关键字:属性 访问 get | 更新日期: 2023-09-27 18:02:16

如何获得当前属性值,而获取访问块正在运行?我试着这样处理:

[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;
        }
    }
}

但是这段代码被排除了。但是如果你看一下微软的教程你会看到一些例子允许使用self property value:

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

get访问器中的当前属性值

变量名和方法名是区分大小写的,这意味着"name"answers"name"是不同的。

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);
    }
}

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

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

一旦你像那样思考它们,你就会发现它们没有什么特别之处。没有特殊的"self"或"current value"。

在第二个代码示例中,必须有一个名为'name'的字段用于存储属性的值。这就是该属性的"当前值"。