“字段”是直接在类或结构中声明的任何类型的变量。
字段是其包含类型的“成员”。
类或结构可以拥有实例字段或静态字段,或同时拥有两者。
实例字段特定于类型的实例。如果您拥有类 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# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问
{
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();
}
}
birthday.day = "Saturday";