1、字段(Field)

1、直接存储数据。
2、通常用于类的内部实现。
3、访问级别可以是public、private、protected等。

2、属性(Property)

1、提供对字段的封装和访问控制。
2、可以包含获取(get)和设置(set)访问器。
3、通常用于类的外部接口。
4、允许添加额外的逻辑,如验证。

3、代码示例

public class Person
{
    // 字段
    private string nameField;
    private int ageField;

    // 属性
    public string Name
    {
        get { return nameField; }
        set
        {
            if (string.IsNullOrEmpty(value))
            {
                throw new ArgumentException("Name cannot be null or empty.");
            }
            nameField = value;
        }
    }

    public int Age
    {
        get { return ageField; }
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException("Age cannot be negative.");
            }
            ageField = value;
        }
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();

        // 使用属性
        person.Name = "John Doe"; // 调用属性的 set 访问器
        Console.WriteLine(person.Name); // 调用属性的 get 访问器

        // 尝试设置无效值会引发异常
        // person.Name = ""; // ArgumentException: Name cannot be null or empty.
        // person.Age = -5; // ArgumentOutOfRangeException: Age cannot be negative.
    }
}

4、总结

1、字段是直接存储数据的成员,用于内部实现。
2、属性提供对字段的封装和访问控制,用于外部接口,并允许添加额外的逻辑。

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐