当前位置: 首页 > news >正文

C#对象和类型

属性、方法、字段

 


字段和属性的区别

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

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

        1、字段可以是public、private、protected、internal 或 protected internal等访问修饰符修饰的。
        2、通常,字段应该被声明为private(或protected),以隐藏类的实现细节,并通过属性或方法来访问,这是封装的一种表现。
        属性
        属性像是类的特殊方法,称为访问器(accessors)。这使得你能够对类成员的访问进行更细粒度的控制。属性允许执行读取(get)和写入(set)操作,并在这些操作中加入额外的逻辑。

        1、属性提供了一种访问字段的方式,同时不暴露类的实现细节。通过get和set访问器,可以控制字段的读写权限,也可以添加额外的逻辑,比如验证输入数据。
        2、使用属性可以实现数据的封装和保护,因为你可以设置字段为private,仅通过属性对其进行访问和修改。
        3、属性可以是只读的(只有get),只写的(只有set),或者既有读也有写。
        字段和属性的区别
        1、封装:字段通常用于类内部的数据存储,而属性提供了一种控制字段访问的机制,实现数据的封装和保护。
        2、控制逻辑:通过属性的get和set访问器,可以在读写数据时添加特定的逻辑,比如数据验证或修改其他字段的值。字段不提供这种控制机制。
        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;}}
}


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

                       部分引用链接

http://www.lryc.cn/news/414062.html

相关文章:

  • 免费分享一套SpringBoot+Vue图书(图书借阅)管理系统【论文+源码+SQL脚本】,帅呆了~~
  • 数据结构与算法--队列
  • <Qt> 常用控件
  • 关于C/C++的编译、构建、CMake、x86_amd64等问题(自用)
  • 【设计模式】工厂模式详解
  • 【Spring Boot】用 Spring Security 实现后台登录及权限认证功能
  • PHP开发【石头剪刀布小游戏】
  • (leetcode学习)42. 接雨水
  • Python编程实例2
  • 排序算法:堆排序,golang实现
  • 【网络安全入门】学习网络安全必须知道的77个网络基础知识
  • limit 以及分页 SQL 语句
  • mysql8.0规范
  • 现代前端架构介绍(第三部分):深入了解状态管理层及其对前端App的影响
  • NLP与搜广推常见面试问题
  • Python怎么实现协程并发呢?
  • 专治408开始的晚!8月一定要完成这些事!
  • 计算机毕业设计选题推荐-校内跑腿业务系统-Java/Python项目实战
  • Unity命名验证工具类
  • 基于cubeMX的STM32开启SPI及DMA
  • AI大模型技术的四大核心架构分析
  • [C#]调用本地摄像头录制视频并保存
  • opencv-图像基础变换
  • xss漏洞(三,xss进阶利用)
  • git 迁移仓库的方法
  • C# Where关键字
  • 《计算机组成原理》(第3版)第1章 计算机系统概论 复习笔记
  • 达梦数据库的系统视图v$cachers
  • 电路元件基本知识详解
  • 从零开始写一个微信小程序