• c#字段和属性的区别


    在C#中,字段(fields)和属性(properties)都是类的成员,它们提供了类存储数据的方式,但它们在用途和功能上有着明显的区别。

    字段

    字段通常用来存储类或结构的状态信息。字段是类的数据成员,通常被用来定义类的存储数据。它们可以是任何类型:内置类型、用户定义的类型、内置或用户定义的委托等。

    • 字段可以是publicprivateprotectedinternalprotected internal等访问修饰符修饰的。
    • 通常,字段应该被声明为private(或protected),以隐藏类的实现细节,并通过属性或方法来访问,这是封装的一种表现。

    属性

    属性像是类的特殊方法,称为访问器(accessors)。这使得你能够对类成员的访问进行更细粒度的控制。属性允许执行读取(get)和写入(set)操作,并在这些操作中加入额外的逻辑。

    • 属性提供了一种访问字段的方式,同时不暴露类的实现细节。通过getset访问器,可以控制字段的读写权限,也可以添加额外的逻辑,比如验证输入数据。
    • 使用属性可以实现数据的封装和保护,因为你可以设置字段为private,仅通过属性对其进行访问和修改。
    • 属性可以是只读的(只有get),只写的(只有set),或者既有读也有写。

    字段和属性的区别

    1. 封装:字段通常用于类内部的数据存储,而属性提供了一种控制字段访问的机制,实现数据的封装和保护。
    2. 控制逻辑:通过属性的getset访问器,可以在读写数据时添加特定的逻辑,比如数据验证或修改其他字段的值。字段不提供这种控制机制。
    3. 绑定支持:在某些情况下,如数据绑定方面,通常需要使用属性而非字段,因为很多框架和库是通过属性进行数据绑定的。
    4. 设计原则:按照C#的设计原则,公共数据成员应该被声明为属性而不是公共字段。即使是简单的数据存取,也推荐使用自动属性(auto-implemented properties)来提供更好的封装。

    示例

    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;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这个示例中,name字段被封装起来,不可以直接从类的外部访问。Name属性提供了对name字段的受控访问,它包含了额外的逻辑来验证输入,避免无效赋值。

  • 相关阅读:
    离线数仓(12):DWD层实现之流量日志解析
    3.AlexNet--CNN经典网络模型详解(pytorch实现)
    PC应用管理工具 连接流程图 支持所有android手机或设备 批量设备批量应用安装卸载等管理 OS升级 push文件夹等
    基于NET蛋糕销售网站 毕业设计-附源码090918
    vue项目实际开发的问题及实用技巧分享(三)
    怎么把mp4转换成amv格式?如何下载amv格式视频?
    HTTP协议
    铠侠携手Aerospike提升数据库应用性能
    Abbexa丨Abbexa FOXD3 DNA 结合ELISA试剂盒方案
    Threejs 3D模型入门项目
  • 原文地址:https://blog.csdn.net/qq_41942413/article/details/137849915