C# get和set访问器:获取和设置字段(属性)的值
C# get和set访问器:获取和设置字段(属性)的值
属性经常与字段连用,并提供了 get 访问器和 set 访问器,分别用于获取或设置字段的值。 get 访问器和 set 访问器的使用与方法非常类似,可以在操作字段时根据一些规则和条件来设置或获取字段的值。 此外,为了保证字段的安全性,还能选择省去 get 访问器或 set 访问器。 定义属性的语法形式如下。 C# Code: public 数据类型 属性名 { get { 获取属性的语句块; return 值; } set { 设置属性得到语句块; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 其中: 1) get{}get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性。 2) set{}set 访问器,用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。 通常属性名的命名使用的是 Pascal 命名法,单词的首字母大写,如果是由多个单词构成,每个单词的首字母大写。 由于属性都是针对某个字段赋值的,因此属性的名称通常是将字段中每个单词的首字母大写。例如定义了一个名为 name 的字段,属性名则为 Name。 【实例】定义一个图书信息类(Book),在类中定义图书编号(id)、图书名称(name)、图书价格(price)3 个字段,并分别为这 3 个字段设置属性,其中将图书名称设置为只读属性。 根据题目要求,代码如下。 C# Code: 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; } } } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 在上面的实例中,在给字段赋值时直接将 value 值赋给字段,如果要对赋给字段的值加以限制,可以先判断 value 值是否满足条件,如果满足条件则赋值,否则给字段赋默认值或进行其他操作。 假设上面实例中的图书价格要求是大于 0 的,如果输入的值不满足条件,则将图书价格设置为 0。修改后的图书价格字段的属性代码如下。 C# Code: public double Price { get { return price; } set { if(value >= 0) { price = value; } else { price = 0; } } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 通过上面的实例可以看出,在定义字段属性时,属性的作用就是为字段提供 get、set 访问器,由于操作都比较类似,在 C# 语言中可以将属性的定义简化成如下写法。 public 数据类型 属性名{get;set;} 这种方式也被称为自动属性设置。简化后图书类中的属性设置的代码如下。C# Code: 如果使用上面的方法来设置属性,则不需要先指定字段。如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。public int Id{get; set;} public string Name{get; set;} public double Price{get; set;} //来源:C/S框架网 | www.csframework.com | QQ:23404761 public int Id{get;}=1; 这里相当于将 Id 属性的值设置成 1,并且要以分号结束。但是,在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加上访问修饰符 private,代码如下。public int Id{private get; set;} 此外,使用 Visual Studio 2015 提供的界面操作方法也可以实现对字段生成属性的操作,打开 Book 类后选中要生成属性的字段,在菜单栏中依次选择“编辑”一“重构” 一 “封装字段”命令,如下图所示。 选择“封装字段”命令,弹出如下图所示的对话框。 在该对话框中如果需要对生成属性的字段做更改,可以通过复选框选中或取消,确认生成的属性后单击“应用”按钮,即可完成封装字段的操作。 用户还可以右击设置好的字段,此时会弹出如下图所示的菜单。 选择“快速操作和重构”命令,然后单击“封装字段”按钮,即可完成对字段的封装操作。
参考文档:
C# Winform动态设置控件的值及反射技术应用 C#插入图片数据并返回自增字段(ISID)的值 C#绑定TreeList的DataSource属性及获取DataRow数据 对象的属性若使用get;set;访问器没有指定成员变量,代码混淆后会丢失数据 C# LINQ使用Distinct方法检查对象某个属性的值是否重复 C# 定义类的属性名称与VS 保留关键字标识符冲突解决方案 SQL获取表结构的表名,字段名称,类型,Identity,PK主键,FK外键,IDX索引,字段说明等资料 sp_sys_GetTableFieldDef存过:SQL获取表结构的字段名称,类型,Identity,PK主键,FK外键,IDX索引,字段说明 C# JsonSettings/JsonSerializerSettings参数设置类 C# 获取字符串实际长度(总字节数)中文2字节字母1字节 C# 克隆对象、复制对象(浅拷贝)、复制对象相同属性的值 C# DataGridView组件自动添加弹出菜单(ContextMenuStrip)复制单元格的值 SetPropertyValue 给对象的属性赋值 sp_sys_GetTableFieldNames 获取资料表的字段备注信息 DataSetExtension - C# DataSet对象持久化到本地文件
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |