**语法**:
```
public 数据类型 属性名
{
get
{
获取属性的语句块;
return 值;
}
set
{
设置属性得到语句块;
}
}
```
## **简化**:也被称为自动属性设置
```
public 数据类型 属性名{get;set;}
```
示例:
定义一个图书信息类(Book),在类中定义图书编号(id)、图书名称(name)、图书价格(price)3 个字段,并分别为这 3 个字段设置属性,其中将图书名称设置为只读属性
~~~
namespace code_1
{
class Book
{
private int id;
private string name;
private double price;
//设置图书编号属性
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
//设置图书名称属性
public string Name
{
get
{
return name;
}
}
//设置图书价格属性
public double Price
{
get
{
return price;
}
set
{
price = value;
}
}
}
}
~~~
如果要对赋给字段的值加以限制,可以先判断 value 值是否满足条件,如果满足条件则赋值,否则给字段赋默认值或进行其他操作
~~~
//图书价格要求是大于 0 的,如果输入的值不满足条件,则将图书价格设置为 0
public double Price
{
get
{
return price;
}
set
{
if(value >= 0)
{
price = value;
}
else
{
price = 0;
}
}
}
~~~
简化(自动属性设置)后图书类中的属性设置的代码如下。
~~~
public int Id{get; set;}
public string Name{get; set;}
public double Price{get; set;}
~~~
## **只读属性**
如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。
~~~
//当于将 Id 属性的值设置成 1,并且要以分号结束
public int Id{get;}=1;
~~~
在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加上访问修饰符 private,代码如下。
~~~
public int Id{private get; set;}
~~~
这样,Id 属性的 get 访问器只能在当前类中使用。
- Visual Studio 2022安装到非C盘
- .net平台区别
- 常用单词
- 关键字
- 操作符(运算符)
- 标识符(命名规范)
- 开始
- 变量
- 常量
- 数据类型
- 值类型
- 变量数据类型
- 枚举类型enum(常量集合)
- 结构类型struct(结构体)
- 元组类型
- 可null类型(T?)
- 引用类型
- 数组(array)
- 集合(List)
- 内置引用类型
- object
- string
- Dynamic(动态类型)
- delegate委托(代理)类型
- 自定义引用类型
- 接口(interface)
- 类class
- record(定义一个引用类型)
- 指针类型(仅用于非安全代码)
- get和set访问器
- delegate委托
- delegate实现发布订阅与事件
- 类型转换
- 合并操作符??
- 类相关
- Partial 部分类
- 类定义以及访问修饰符(封装)
- abstract抽象类与sealed密封类
- virtual虚方法
- 接口interface
- C# 预处理器指令
- C#技术栈
- 判断(流程控制)与三元运算
- if
- switch
- 三元运算
- 循环
- while 循环
- for循环
- foreach循环
- do...while 循环
- 文件操作
- 其他
- 多开