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


通过上面的实例可以看出,在定义字段属性时,属性的作用就是为字段提供 getset 访问器,由于操作都比较类似,在 C# 语言中可以将属性的定义简化成如下写法。
public 数据类型 属性名{get;set;}
这种方式也被称为自动属性设置。简化后图书类中的属性设置的代码如下。
C# Code:

public int Id{get; set;}
public string Name{get; set;}
public double Price{get; set;}

//来源:C/S框架网 | www.csframework.com | QQ:23404761
如果使用上面的方法来设置属性,则不需要先指定字段。如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。
public int Id{get;}=1;
这里相当于将 Id 属性的值设置成 1,并且要以分号结束。但是,在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加上访问修饰符 private,代码如下。
public int Id{private get; set;}
这样,Id 属性的 get 访问器只能在当前类中使用。


此外,使用 Visual Studio 2015 提供的界面操作方法也可以实现对字段生成属性的操作,打开 Book 类后选中要生成属性的字段,在菜单栏中依次选择“编辑”一“重构” 一 “封装字段”命令,如下图所示。


贴图图片-get,set1

选择“封装字段”命令,弹出如下图所示的对话框。

在该对话框中如果需要对生成属性的字段做更改,可以通过复选框选中或取消,确认生成的属性后单击“应用”按钮,即可完成封装字段的操作。


贴图图片-get,set2


用户还可以右击设置好的字段,此时会弹出如下图所示的菜单。

贴图图片-get,set3

选择“快速操作和重构”命令,然后单击“封装字段”按钮,即可完成对字段的封装操作。


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:C#方法的参数(实参和形参)
下一篇:C#调用类成员
评论列表

发表评论

评论内容
昵称:
关联文章

C# getset访问获取设置字段属性
对象属性若使用get;set;访问没有指定成员变量,代码混淆后会丢失数据
CSFrameworkV6 - 设置公共字段文本框只读或禁用
标签:C#.Net组件开发 - 自定义设计持久化对象属性
C# Winform动态设置控件及反射技术应用
C#绑定TreeListDataSource属性获取DataRow数据
C#插入图片数据并返回自增字段(ISID)
C#基础之索引(Indexer)
C# LINQ使用Distinct方法检查对象某个属性是否重复
C# 克隆对象、复制对象(浅拷贝)、复制对象相同属性
C#获取Windows10屏幕缩放比例
设置GridControl.EmbeddedNavigator属性可隐藏按钮记录数提示
VSCode系统参数配置:settings.json 配置
sp_sys_GetTableFieldNames 获取资料表字段备注信息
Dev表格RepositoryItemLookUpEdit组件改变设置其它列-原创
C#.Net类型引用类型区别
WCF:ServiceDebugBehavior.IncludeExceptionDetailInFaults 属性设置
文件对话框多种文件格式设置(Open/SaveFileDialog.Filter属性设置)
C# 获取设置PropertyGrid组件列宽度(分隔条宽度)
VUE生命周期DOM对象方法、回调函数属性详解

热门标签
.NET5 .NET6 .NET7 APP Auth-软件授权注册系统 Axios B/S B/S开发框架 Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 DAL数据访问层 Database datalock DbFramework Demo教学 Demo下载 DevExpress教程 DOM EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS NavBarControl Node.JS NPM OMS ORM PaaS POS Promise API Redis SAP SEO SQL SQLConnector TMS系统 Token令牌 VS2022 VSCode VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 版本区别 报表 踩坑日记 操作手册 代码生成器 迭代开发记录 基础资料窗体 架构设计 角色权限 开发sce 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 秘钥 密钥 权限设计 软件报价 软件测试报告 软件简介 软件开发框架 软件开发平台 软件开发文档 软件体系架构 软件下载 软著证书 三层架构 设计模式 生成代码 实用小技巧 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序