windows C#-声明和使用读/写属性

属性提供了公共数据成员的便利性,且不会产生未受保护、不可控制和未经验证地访问对象的数据的风险。 属性声明访问器:从基础数据成员中赋值和检索值的特殊方法。 set 访问器可分配数据成员,get 访问器检索数据成员值。

此示例演示具有两个属性的 Person 类:Name(字符串)和 Age(整型)。 这两个属性均提供 get 和 set 访问器,因此它们被视为读/写属性。

示例
class Person
{private string _name = "N/A";private int _age = 0;// Declare a Name property of type string:public string Name{get{return _name;}set{_name = value;}}// Declare an Age property of type int:public int Age{get{return _age;}set{_age = value;}}public override string ToString(){return "Name = " + Name + ", Age = " + Age;}
}public class Wrapper
{private string _name = "N/A";public string Name{get{return _name;}private set{_name = value;}}}class TestPerson
{static void Main(){// Create a new Person object:Person person = new Person();// Print out the name and the age associated with the person:Console.WriteLine("Person details - {0}", person);// Set some values on the person object:person.Name = "Joe";person.Age = 99;Console.WriteLine("Person details - {0}", person);// Increment the Age property:person.Age += 1;Console.WriteLine("Person details - {0}", person);// Keep the console window open in debug mode.Console.WriteLine("Press any key to exit.");Console.ReadKey();}
}
/* Output:Person details - Name = N/A, Age = 0Person details - Name = Joe, Age = 99Person details - Name = Joe, Age = 100
*/
可靠编程

在前面的示例中,Name 和 Age 属性为 public,同时包含 get 和 set 访问器。 公共访问器使得任何对象均可读取和写入这些属性。 但是,有时需要排除其中的一个访问器。 可以省略 set 访问器以使属性为只读:

public string Name
{get{return _name;}private set{_name = value;}
}

或者,可以公开一个访问器,但使另一个访问器为私有或受保护。 

声明属性后,便可将这些属性用作类的字段。 在获取和设置属性的值时,属性允许一种自然的语法,如以下语句所示:

person.Name = "Joe";
person.Age = 99;// 1. 在属性 set 方法中,特殊的 value 变量为可用。 此变量包含用户指定的值,例如:
_name = value;// 2. 请注意在 Person 对象上递增 Age 属性的简洁语法:
person.Age += 1;// 3. 如果将单独的 set 和 get 方法用于模型属性,则等效的代码可能如下所示:
person.SetAge(person.GetAge() + 1);// 4. ToString 方法在此示例中被重写:
public override string ToString()
{return "Name = " + Name + ", Age = " + Age;
}// 5. 请注意,ToString 未显式用于程序中。 默认情况下,通过 WriteLine 调用对其进行调用。

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

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

相关文章

架构13-持久化存储

零、文章目录 架构13-持久化存储 1、Kubernetes 存储设计 (1)存储设计考量 **设计哲学:**Kubernetes 遵循用户通过资源和声明式 API 描述意图,Kubernetes 根据意图完成具体操作。**复杂性:**描述用户的存储意图本身…

spring重点面试题总结

bean的生命周期 在 Spring 中,BeanDefinition、Bean 实例化、依赖注入、Aware 接口的处理、以及 BeanPostProcessor 的前置和后置处理等,都是 Spring 容器管理 Bean 生命周期的关键部分。下面我将详细解释这些过程。 1. 通过 BeanDefinition 获取 Bean…

【文件操作】写入json文件

一般用json.dump把dict或者list导出到文件 一般用json.dumps把dict或者list导出到字符串 dump是导出的意思,这样看dict和list是自己人,但是string和文件相对于代码就是外人 代码例子 import json import copyfid = open(origin.txt, r) lines = fid.readlines() res_list…

单片机的选择因素

在选择单片机型号时,需要根据具体的应用需求来选择合适的单片机。单片机(Microcontroller Unit, MCU)是一种将计算机的主要部分集成在一个芯片上的微型计算机,它通常包括处理器、存储器、输入/输出接口等。随着技术的发展&#xf…

使用wol-web通过NAS远程唤醒电脑

相信很多人都有远程开机的需求,有时候需要远程控制家中的电脑办公、玩游戏。远程控制比较好实现,安装类似向日葵的软件即可。而远程开机稍微麻烦一点,有的通过物理开关实现(开机棒)我们选择远程网络唤醒的方式实现&…

TortoiseGit 图标覆盖设置

TortoiseGit 图标覆盖设置 图标覆盖设置隐藏图标覆盖切换样式 我们安装了小海龟后,它会在仓库目录下给所有图标覆盖上状态标记。 图标覆盖设置 右键菜单打开 :设置 》 图标覆盖。 隐藏图标覆盖 如果不想图标上出现小乌龟的状态标记。直接点这里可以…

Chrome浏览器调用ActiveX控件--allWebOffice控件

背景 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用(阅读、编辑、保存等),支持编辑文档时保留修改痕迹,支持书签位置内容动态填充,支持公文套红,支持文档保护控制等诸多办公功能,…

docker部署redis使用键空间通知订阅

1. redis的键空间通知(keyspace notification) 大概意思是比如时间删除 或者 过期的时候发布的一个通知。通过一个通知来发布或修改一个状态。通常理解为 pub/sub(发布/订阅)。 键空间通知有两种类型key-space , key-event, 可以理解为key-space对应事件…

(堆) 优先队列(堆)的简单实现

文章目录 🏔️堆是什么?🏔️C 标准库🏔️手动实现⛰️原理简介⛰️C⛰️C语言 ⭐END🌟交流方式 🏔️堆是什么? 堆简介 - OI Wiki 堆是一棵树,其每个节点都有一个键值,且…

【EXCEL】 获取多列中 不为空的那一个数据

从多个表格筛选出来的上班时间是下表这样的 我要把他们放在同一列,这样方便后续处理,合并列输入下面这个公式即可 日期不加 TEXT() 函数 转日期格式;将得到是一串数字 TEXT(TEXTJOIN(", ",TRUE,B2:F2),&qu…

springboot+Loki+Loki4j+Grafana搭建轻量级日志系统

文章目录 前言一、日志组件介绍 1.1 Loki组件1.2 Loki4j组件1.3 Grafana 二、组件下载安装运行 Loki下载安装运行Grafana下载安装运行 三、创建springboot项目总结 前言 日志在任何一个web应用中都是不可忽视的存在,它已经成为大部分系统的标准组成部分。搭建日志…

自然语言处理:从入门到精通全指引

一、引言 自然语言处理(NLP)作为人工智能领域的关键分支,旨在让计算机理解、生成和处理人类语言,近年来取得了令人瞩目的成就,在智能客服、机器翻译、文本分析、语音助手等众多领域发挥着重要作用。从入门到精通自然语…

opencvocr识别手机摄像头拍摄的指定区域文字,文字符合规则就语音报警

安装python,pycharm,自行安装。 Python下安装OpenCv 2.1 打开cmd,先安装opencv-python pip install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple2.2 再安装opencv-contrib-python pip install opencv-contrib-python --user …

智能时代网络空间认知安全新观察

文章目录 前言一、历史上的四次认知革命二、人工智能革命掀起认知安全新浪潮三、人工智能技术塑造认知安全新范式四、人工智能治理应对认知安全新思考 前言 12月5日,在2024第三届北外滩网络安全论坛上以“智能时代网络空间认知安全新观察”为主题作主旨演讲&#x…

【Python标准库】subprocess

1. subprocess是什么? 输入终端命令进行操作 2.用法 run() 作用:创建新的进程执行外部命令,并等待它们完成​​​​​​​语法:run([command, arg1, arg2], capture_output=True, text=True,check,timeout) [command, arg1, arg2], 是单独运行的命令和参数,作为列表来处…

springboot417社区疫情管理系统-(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统社区疫情管理系统信息管理难度大,容错率低&a…

信创国产化时代:打造安全高效的信创网站解决方案

在全球科技竞争日益激烈的背景下,信创国产化已经成为中国信息技术领域的重要战略选择。信创国产化,即信息技术应用创新与国产化,旨在通过自主研发和创新,推动核心技术的国产化,减少对外部技术的依赖,确保国…

day10性能测试(2)——Jmeter

【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、LoadRunner vs Jmeter 1.1 LoadRunner 1.2 Jmeter 1.3 对比小结 2、Jmeter 环境安装 2.1 安装jdk 2.2 安装Jmeter 2.3 小结 3、Jmeter 文件目录结构 4、Jmeter默认配置修改 5、Jmeter元件、组…

可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结

1.介绍 Spring Boot是一个基于Spring的套件,它提供了一个即开即用的应用程序架构,可以简化Spring应用的创建及部署流程,帮助开发者更轻松快捷地构建出企业及应用。 Spring Boot项目中Actuator模块提供了众多HTTP接口端点(Endpoi…

KV Shifting Attention Enhances Language Modeling

基本信息 📝 原文链接: https://arxiv.org/abs/2411.19574👥 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen🏷️ 关键词: KV shifting attention, induction heads, language modeling📚 分类: 机器学习, 自然语言处…