C# 自动属性

ops/2024/11/17 12:11:44/

C# 的自动属性是一个简化属性定义的特性,允许快速声明属性,而不需要手动定义字段和 getter/setter 方法。

基本语法

public class Person
{public string Name { get; set; }public int Age { get; set; }
}

Name 和 Age 是自动属性,分别用于存储人的名字和年龄。会自动为它们生成相应的私有字段。

设置默认值

C# 6.0 引入了在声明自动属性时设置默认值的功能。

public class Person
{public string Name { get; set; } = "Unknown";public int Age { get; set; } = 0;
}

Name 属性的默认值为 "Unknown",而 Age 的默认值为 0。

只读和写保护属性

你还可以选择只自定义 getter 或 setter,从而创建只读或只写属性。

只读属性

public class Person
{private string name;public string Name{get { return name; }private set { name = value; } // 允许在类内设置,但外部不可写}public Person(string name){Name = name; // 可以在构造函数中设置}
}

只写属性

public class Person
{private int age;public int Age{private get { return age; } // 只允许在类内读取set{if (value < 0){throw new ArgumentOutOfRangeException("Age cannot be negative.");}age = value;}}
}

 

public class Person
{public string Name { get; }public int Age { get; }public Person(string name, int age){Name = name;Age = age;}
}

使用访问修饰符

可以使用访问修饰符来控制属性的可见性。

例如,可以将 setter 设为私有,以限制对属性的写入。

public class Person
{public string Name { get; private set; }public int Age { get; private set; }public Person(string name, int age){Name = name;Age = age;}
}

Name 和 Age 属性的 setter 是私有的,只能在类的内部设置它们的值,而外部代码只能读取这些值。

实际应用场景

自动属性在许多实际应用中都非常有用。下面是一些使用场景:

  • 数据传输对象:在数据传输对象(DTO)中,自动属性可以快速定义需要传输的数据结构。
  • 简单的模型类:在 MVC 模型中,自动属性可以帮助简化数据模型的定义。
  • 配置类:在应用程序配置类中,使用自动属性可以快速建立配置选项的封装。

http://www.ppmy.cn/ops/134416.html

相关文章

微信小程序之轮播图

效果图 实现 <swiper class"banner" indicator-dots"true" indicator-color"rgba(255,255,255,1)" indicator-active-color"#ff0000" autoplay"true" interval"100" circular"true"><swi…

Relaxcert SSL证书申请与自动续签之IIS

Relaxcert SSL证书申请与自动续签之IIS 1.下载安装自动续签程序2.配置客户端秘钥3.HTTP站点升级HTTPS4.关于SSL自动续签 Relaxcert SSL证书申请与自动续签工具 控制台地址 https://cert.relaxcert.com 文档地址 https://doc.relaxcert.com 1.下载安装自动续签程序 登录控制台…

ANSYS学习笔记【仿真 优化 刚柔耦合】

使用软件&#xff1a;ANSYS19.2 ANSYS进行轮腿式星球探测车腿部分析&#xff1a; static structureEngineering data双击&#xff0c;进去是结构钢&#xff0c;有一些参数。点左上角书本图标Sources可以选择其他材料&#xff0c;这里选General materials&#xff0c;选Alumin…

【Ubuntu侧边菜单点击没反应】【Ubuntu 20.04】【浏览器、文件夹点击没反应】

在Ubuntu服务器上&#xff0c;出现左侧菜单栏&#xff08;如浏览器、文件资源管理器等&#xff09;点击无反应的问题&#xff0c;通常是由于桌面环境&#xff08;如GNOME&#xff09;出现了异常&#xff0c;可能是由于资源消耗过高、图形驱动问题、或者某些后台进程挂起等原因导…

ELMo模型介绍:深度理解语言模型的嵌入艺术

ELMo模型介绍&#xff1a;深度理解语言模型的嵌入艺术 引言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;词嵌入&#xff08;word embedding&#xff09;是将词汇或短语从词汇表映射到向量的数学表示&#xff0c;这些向量能够捕捉词汇之间的语义和语法关系。E…

掌握Electron工具链:在Windows操作系统上无缝开发MacOS软件

这里写自定义目录标题 前言实现方式实现过程 前言 &#x1f525;&#x1f525;&#x1f525;Electron作为一个跨平台的构建工具&#xff0c;可以让我们实现快速构建桌面应用&#xff0c;给前端开发带来了巨大的便利。相信使用过Electron&#xff0c;都会面临这么一个问题&…

安全生产管理的重要性:现状、痛点与改进之路

当前&#xff0c;安全生产管理已经成为企业管理中的关键环节&#xff0c;但现实中仍然存在诸多痛点。近年来&#xff0c;随着工业化和现代化的快速推进&#xff0c;企业在追求效益的同时&#xff0c;忽视安全管理的现象屡见不鲜。据统计&#xff0c;安全事故的发生频率仍然较高…

【鸿蒙开发】第二十二章 IPC与RPC进程间通讯服务

目录 1 IPC与RPC通信概述 2 实现原理 3 约束与限制 4 使用场景 5 开发步骤 5.1 Native侧开发步骤 5.2 ArkTS侧开发步骤 6 远端状态订阅开发实例 6.1 使用场景 6.1.1 Native侧接口 6.2 ArkTS侧接口 6.3 Stub感知Proxy消亡&#xff08;匿名Stub的使用&#xff09; 1 …