在C#中,字段(fields)和属性(properties)都是类的成员,它们提供了类存储数据的方式,但它们在用途和功能上有着明显的区别。
字段通常用来存储类或结构的状态信息。字段是类的数据成员,通常被用来定义类的存储数据。它们可以是任何类型:内置类型、用户定义的类型、内置或用户定义的委托等。
public、private、protected、internal 或 protected internal等访问修饰符修饰的。private(或protected),以隐藏类的实现细节,并通过属性或方法来访问,这是封装的一种表现。属性像是类的特殊方法,称为访问器(accessors)。这使得你能够对类成员的访问进行更细粒度的控制。属性允许执行读取(get)和写入(set)操作,并在这些操作中加入额外的逻辑。
get和set访问器,可以控制字段的读写权限,也可以添加额外的逻辑,比如验证输入数据。private,仅通过属性对其进行访问和修改。get),只写的(只有set),或者既有读也有写。get和set访问器,可以在读写数据时添加特定的逻辑,比如数据验证或修改其他字段的值。字段不提供这种控制机制。class Person
{
// 字段
private string name;
// 属性
public string Name
{
get { return name; }
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Name cannot be null or empty.");
name = value;
}
}
}
在这个示例中,name字段被封装起来,不可以直接从类的外部访问。Name属性提供了对name字段的受控访问,它包含了额外的逻辑来验证输入,避免无效赋值。