C#类的字段

“字段”是直接在结构中声明的任何类型的变量。

字段是其包含类型的“成员”。

类或结构可以拥有实例字段或静态字段,或同时拥有两者。

 

实例字段特定于类型的实例。如果您拥有类 T 和实例字段 F,可以创建类型 T 的两个对象,并修改每个对象中 F 的值,这不影响另一对象中的该值。

静态字段属于类本身,在该类的所有实例中共享。

通常应仅为具有私有或受保护可访问性的变量使用字段

类向客户端代码公开的数据应通过方法属性索引器提供。

 

在类块中通过指定字段的访问级别,然后指定字段的类型,再指定字段的名称来声明这些字段。例如:
 
public class CalendarEntry
{
        private DateTime date;

       public string day;

        public DateTime Date
    {
        get
        {
            return date;
        }
        set
        {
            if(value.Year > 1998 || value.Year <= 2010)
            {
                date = value;
            }
            else
                throw new ArgumentOutOfRangeException();
        }

    }

       public void SetDate(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt.Year > 1980 || dt.Year <= 2008)
        {
            date = dt;
        }
        else
            throw new ArgumentOutOfRangeException();           
    }

    public TimeSpan GetTimeSpan(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt != null && dt.Ticks < date.Ticks)
        {
            return date - dt;
        }
        else
            throw new ArgumentOutOfRangeException(); 

    }
}
若要访问对象中的字段,请在对象名称后面添加一个句点,然后添加该字段的名称:
CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";

字段的初始化紧靠调用对象实例的构造函数之前。如果构造函数为字段赋值,则该值将覆盖字段声明期间给出的任何值。
可以选择将字段声明为 static这使得调用方在任何时候都能使用字段,即使类没有任何实例。
 
可以将字段声明为 readonly只读字段只能在初始化期间或在构造函数中赋值。
staticreadonly 字段非常类似于常数,只不过 C# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问