C# 字段和属性的区别

区别

在C#中,字段(Field)和属性(Property)都是用来封装对象状态的方式,但它们有以下区别:

访问级别:

字段通常是private,而属性可以有不同级别的访问限制(例如public, private, protected等)。

封装:

属性内部可以包含逻辑,比如验证数据的有效性,而字段则只是简单的数据存储。

属性是对字段的封装,它使用get和set访问器来控制如何设置或返回字段值。属性的实质是方法

数据存储:

属性没有存储数据的功能,数据都存在字段(字段是类内部的变量)中,所以只有修改字段的数据才能更改数据,修改属性的值没用。

属性可以限定字段值的范围,提供错误处理,增强类的安全性和可重用性。

设计理念:

属性更符合面向对象的封装原则,因为它们可以表现为公共的接口下隐藏复杂的实现。

数据绑定:

属性可以支持数据绑定,而字段不行。

下面是字段和属性的简单示例:

public class Person
{// 字段private string _name;// 属性public string Name{get { return _name; }set { _name = value; }}
}

在这个例子中,_name是一个字段,用于存储姓名数据。Name是一个属性,它允许外部代码读取和写入姓名,同时可以在设置时添加逻辑检查。

参考文献

【C#】字段与属性的区别_c#中字段和属性区别-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 实现大数简化,带单位显示

一、场景 在前端展示的数据时,如果数据数值太大,会导致展示的数据非常长,不仅用户不能迅速读出数值大小而且影响美观,此时我们需要将这种大数简化为带单位的数值,如 250000 转为 25.0万。 二、实现函数 // 大数简化函…

各RAID级别的特点以及对应的容量计算方式

RAID(Redundant Array of Independent Disks)是一种将多个独立的硬盘组合起来以提高数据存储性能、容量或冗余度的技术。在实际项目中,通常采购的磁盘阵列支持设置对应的RAID级别。本人也进行过实战,而现在为了应对软考来总结一下…

【攻防世界】lottery

弱比较代码审计 本题已提供源码,如果没提供,输入/robots.txt,发现/.git function buy($req){require_registered();require_min_money(2);$money $_SESSION[money];//接受用户原有money$numbers $req[numbers];//接受输入的数字$win_num…

【JS】数组去重

方式一:使用 Set const handler (array) > {return [...new Set(array)]; } const array [1, 2, 2, 3, 3, 4, 5, 5]; console.log(handler(array)); // [1, 2, 3, 4, 5]方式二:使用filter const handler (array) > {return array.filter((ite…

pytest的request fixture:实现个性化测试需求

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 在前文章中,我们看到pytest_repeat源码中有这…

Android 13 有线以太网静态ip保存逻辑梳理分析

源码环境:高通Android 13 这里特别说明,Android13中,ipconfig.txt配置文件目录有改变 以前:/data/misc/ethernet/ipconfig.txt 最新的有线网配置文件保存目录: /data/misc/apexdata/com.android.tethering/misc/ethe…

C++类和对象第二弹(构造,析构和拷贝构造函数)

目录 前言 1. 类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3. 析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 总结 前言 本文主要讲解类中构造函数、析构函数和拷贝构造函数。关于这三个类中默认成员函数的知识点很多,有许多…

视觉SLAM学习打卡【10】-后端·滑动窗口法位姿图

本节是对上一节BA的进一步简化,旨在提高优化实时性.难点在于位姿图部分的雅可比矩阵求解(涉及李代数扰动模型求导),书中的相关推导存在跳步(可能数学功底强的人认为过渡的理所当然),笔者参考了知…

【Gradle】Gradle的构建过程

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。 面向Java应用为主。当前其支持的语言C、J…

免费网址导航网站源码v1.7.0最新版内置多个模板

效果图 PC端&移动端(共有7款主题) 1.5IUX搜索 2.Onenav主题 六零二开 3.基于彩虹工具网修改 4.默认主题 5.基于default主题开发 6.极简个人主页主题 7.孤客主题 后台管理效果图 项目说明 孤客导航页(LoSFeR)是一个…

Zephyr Windows开发环境搭建

Zephyr 如果有错误或未及时更新,请以官网文档为主 官网:https://docs.zephyrproject.org/latest/develop/getting_started/index.htm 下载安装 Chocolatey 这是一个类似于在Linux系统下 yum 和 apt 那样的包管理器 官网:https://chocolat…

安宝特方案 | AR工业解决方案系列-工厂督查

在工业4.0时代,增强现实(AR)技术正全面重塑传统工业生产,在工厂监督领域,其应用不仅大幅提升了生产效率、监测准确性和规范执行程度,而且为整体生产力带来了质的飞跃。 01 传统挑战与痛点 在制造业生产流程…

未来趋势:探索Facebook在数字化时代的发展方向

在当今日益数字化的时代,社交媒体已经成为人们日常生活中不可或缺的一部分。Facebook,作为全球最大的社交媒体平台,一直处于行业的前沿,不断地探索和引领社交媒体的发展趋势。本文将深入探讨Facebook在数字化时代的发展方向&#…

微信原生小程序封装用户登陆

场景: 后端在用户登陆后会返回resfreshToken和token; open-type是小程序中button的属性之一,合法霍倩倩getUserInfo,引导用户授权,可以从bindgetuserinfo回调中获取到用户信息。button可以指定plain属性,完全去掉样式,跟view类似。 封装的登陆文件(user.js) /*** 用户…

如何解决Charles抓包乱码?

一、问题:抓包乱码 二、 1、打开Charles安装的目录下,Charles.ini文件, 2、添加内容、保存 vmarg.5-Dfile.encodingUTF-8 三、重启,再次抓包

软考之【系统架构设计师】

系统架构设计师 根据原人事部、原信息产业部文件(国人部发[2003]39号)文件规定,计算机软件资格考试纳入全国专业技术人员职业资格证书制度的统一规划,实行统一大纲、统一试题、统一标准、统一证书的考试办法,每年举行…

Object.assign()用法及详细分析到底是浅拷贝还是深拷贝?

Object.assign方法用于对象的合并,将源对象(source )的所有可枚举属性,复制到目标对象(target)。 Object.assign(target,source1,source2) Object.assign方法的第一个参数是目标对象,后面的参数…

Next.js动态路由如何使用

官方解释 Next.js 允许你创建具有 动态路由 的页面。例如,你可以创建一个名为 pages/posts/[id].js 的文件用以展示以 id 标识的单篇博客文章。当你访问 posts/1 路径时将展示 id: 1 的博客文章。 代码 这里先用一个写好的实例代码来展示 import React from react…

Python-Qt上位机设计

1.下载designer软件 2.自己设计一个界面 3.在指定部件加入点击响应命令函数名 鼠标点击目标部件拖出信号线 4.保存生成.ui文件,用pycharm打开 5.生成.py文件 6.新建一个功能文件 上图中class MainWindow的具体代码不予展示。 7.生成exe文件 将写好的py文件保存&a…

记一次对接第三方数据,存入数据库后清洗数据,数据重复

一现象&#xff1a; 对接第三方数据&#xff0c;先全量存入数据库&#xff0c;然后进行跑批清洗&#xff0c;在清洗过程中发现每次都有不同条数的数据重复。 二根本原因&#xff1a; 就是数据库中有的重复的字段条数存在空格&#xff0c;有的没有。 QueryWrapper<DDeviceT…