网站首页 > 博客文章 正文
无参属性
属性只不过是一种“高级字段”,与字段相比,属性实现了对字段的封装。
CLR提供了属性的机制,简化写法,这样属性就没有任何特殊行为,也成为自动属性:
public int Age { get; set; }
无参属性只是语法糖,反编译后编译器仍旧会自动为我们生成get和set方法以及一个支持字段,本质上就是一个或者两个方法,只是在我们客户端代码看起来更像是一个字段而已。
只读和只写属性
只读:
public int Age { get; }
此时这个属性就只是只读了,初始化这个属性的值后,就再也无法更改它的值。
带有逻辑的属性
我们可以通过给get和set加入代码控制属性的范围。
private int age;
public int Age {
get {
return age;
}
set {
if (value < 0) {
throw new ArgumentOutOfRangeException("Age",value,"Age必须大于等于0");
}
age = value;
}
}
有参属性
有参属性又叫索引器,它是重载[]操作符的一种方式,让对象以类似数组的方式来存取。
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
Console.Write(myClass[1]); // 李四
Console.ReadKey();
}
}
public class MyClass
{
private string[] _names = { "张三", "李四", "王五", "赵六", "田七" };
public string this[int index]
{
get
{
if (index < 0 || index >= _names.Length)
{
throw new ArgumentException();
}
return _names[index];
}
set { _names[index] = value; }
}
}
属性的意义
通过属性的封装,保留了与外部交互的能力,又实现了可靠的读写机制。
例如ATM机可以存取钱,查询余额等,但是它为什么可以做到这些,怎么做的,比如钱是怎么吐出来的我们不需要知道,我们只需要知道一些简单的操作步骤即可达成我们的目的。通过封装,类型只需要向外部提供它应该知道的信息。
猜你喜欢
- 2024-10-15 Python 速度慢,试试这个方法提高 1000 倍
- 2024-10-15 C# 文件操作浅析(c#代码文件)
- 2024-10-15 从零开始自学C#基础的第十五天——数组的基本用法
- 2024-10-15 浅谈C#取消令牌CancellationTokenSource
- 2024-10-15 总结了才知道,原来channel有这么多用法
- 2024-10-15 面向对象(8-15)异常类-C#编程零基础到入门学习
- 2024-10-15 .NET 6 中 LINQ 的改进(.net 调优)
- 2024-10-15 Log4net配置文件 C#(c# log4j)
- 2024-10-15 C# BIN文件读取以及CRC校验(匹配STM32F103)
- 2024-10-15 C#如何对String中的Contact/Join方法进行优化的
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)