`
sunqing0316
  • 浏览: 41118 次
  • 性别: Icon_minigender_2
文章分类
社区版块
存档分类
最新评论

C#中的GET和SET访问器

 
阅读更多
我们在学习C#语法的属性时,都要首先和GET,SET访问器打交道,从英文的字面意思上理解,GET应该就是获得什么什么,而SET应该是设置什么什么,那我们看一下,官方是怎么定义这对访问器的:get是读取属性时进行的操作,set是设置属性时进行的操作。定义一个属性如果只有get,这个属性就是只读的。同样,只有set,属性就是只写的,当然只写的属性我觉的意义不是很大。

接下来我们通过一些代码实例来接触一下GET和SET访问器

class Bank { private int money;//私有字段 public int Money //属性 { //GET访问器,可以理解成另类的方法,返回已经被赋了值的私有变量money get { return money; } //SET访问器,将我们打入的值赋给私有变量money set { money = value; } } }

我们可以打个生动的比方:

Money属性就像银行里的自动存取款机,你看不见里面的money,但你能用set(存钱),用get(取钱)。money是一个私有字段,是分装在类中的,类以外的程序不能直接访问的,类的set和get成员是外部程序访问类内部属性的唯一方法,就像你去银行取钱,你不能直接从银行的保险柜里拿到钱,而是银行营业人员把钱取出来给你的。
那我们设置了Money属性,怎么使用呢??

class Program { static void Main(string[] args) { //实例化一个Bank银行 Bank bank = new Bank(); //对Money属性做赋值操作,这时我们访问的是SET访问器 bank.Money = 15; //对Money属性做取值操作,这时我们访问的是GET访问器 int a = bank.Money; } }

细心的朋友可以发现当我们设置断点在SET访问的中,执行代码 bank.Money = 15;时,就会进入我们属性中的SET访问器了。

以上就是我们的SET和GET访问器的最基本的应用了。

但是我们为什么要用GET和SET访问器呢??
通过GET和SET对公有变量Money进行读写操作,实际就是间接更改money私有变量的值,那既然如此。为何不设money为public,让实例直接对money进行读写操作呢?我们是不是在多此一举呢?

其实,我当初刚接触GET和SET就很理解,并不是说他们的含义难理解,而是为什么要用?为何不直接用个public的字段变量来代替呢?

理解一:用了GET和SET能让赋值和取值增加限制

class Bank { private int money;//私有字段 public int Money //属性 { //GET访问器,可以理解成另类的方法,返回已经被赋了值的私有变量money get { return money; } //SET访问器,将我们打入的值赋给私有变量money,并且加了限制,不能存负的 set { if (value >= 0) { money = value; } else { money = 0; } } } }

这样的话,我们是永远无法给Money属性赋值负的金钱了!

其实这种应用才我们的实际的项目中,属性设置中非常常见!例:

public string ApplyStaff { //延迟加载ApplyStaff对象 get { if (this.IsGhost) { LazyLoaderFactory.GetLoader().LoadApplicationConfirm(this); } return applyStaff; } set { //判断输入的字符的长度 if (value.Length > 40) { throw new Exception("领用人不能超过40个字符。"); } this.applyStaff = value; } }

public string BillName { get { return billName; } set { if (value==string.Empty) { throw new Exception("单据名称不能为空"); } else if (value.Length > 40) { throw new Exception("单据名称长度不能超过40个字符"); } else { this.billName = value; } } }

如果在SET访问器中设置这个属性的一些特性,比如说不能为空,长度大小,必须为数字,各类正则表达式等等,然后抛出异常,表示层再来接受,这样就可以少写很多验证程序了。

理解二:封装性、安全性、完整性

我也没想太明白

分享到:
评论

相关推荐

    C# get与set操作.rar

    在C#编程语言中,`get`和`set`是访问器方法,它们用于属性(Property)的定义,提供了一种安全的方式来读取和修改对象的私有成员。属性是类的一个特性,它允许我们像访问字段一样访问数据,但同时提供了额外的控制和...

    用Visual Studio 开发工具 如何快速批量生成属性的 get 和set 方法 .

    当我们创建一个类并定义其属性时,通常需要手动编写get和set访问器,这在处理大量属性时显得繁琐。本篇文章将详细讲解如何使用Visual Studio开发工具快速批量生成属性的get和set方法。 首先,我们需要理解属性在...

    深入C#中get与set的详解

    在C#编程语言中,get和set是属性...总结,get和set访问器是C#中实现数据封装的关键工具,它们提供了对字段的控制,确保了数据的安全性和代码的整洁性。正确理解和使用get和set访问器对于编写高质量的C#代码至关重要。

    经典讲解C# get set.docx

    `value`关键字在set访问器中代表要赋给字段的新值。 属性可以是只读、只写或读写的。只读属性只有get访问器,只写属性只有set访问器,而读写属性同时具有get和set访问器。以下是一个只读属性的示例: ```csharp ...

    经典讲解C# get set

    在C#编程语言中,`get` 和 `set` 是实现属性访问器的核心组成部分,它们不仅增强了代码的安全性,还提高了程序的封装性,是面向对象编程(OOP)的重要实践之一。本文将深入探讨C#中的`get`和`set`机制,以及如何正确...

    getandset.pdf

    * 可以在get和set访问器中添加更多的逻辑和验证 6. 属性的应用场景 属性可以应用于各种场景,例如: * 封装和保护数据成员 * 提供一种安全、灵活的方式来访问和修改数据 * 实现数据验证和逻辑检查 * 记录和跟踪...

    c#访问器演示 长方体周长面积计算

    首先,让我们深入了解一下C#中的get和set访问器: 1. **get访问器**:get访问器用于返回属性的值。在类的私有字段中存储实际数据,然后get方法提供一个无参数的公共接口来获取这个值。例如,对于长方体的长度,可以...

    网络之美 JavaScript中Get和Set访问器的实现代码

    前两天IE9 Beta版发布了,对于从事Web开发的朋友们来说真是个好消息啊,希望将来有一天各个浏览器都能遵循统一的标准。今天要和大家分享的是JavaScript中的Get和Set访问器,和C#中的访问器非常相似。

    c# 索引器三

    - 索引器在类中定义为公共成员,并且通常具有get和set访问器,用于读取和修改值。 - 索引器的关键字是`this`,它作为返回类型前的修饰符。 2. 索引器的语法: ```csharp public 数据类型 this[参数列表] { get...

    C#应用程序开发-属性与索引.pptx

    此外,还可以在get和set访问器中添加额外的逻辑,如数据验证。 索引器是C#中另一种增强访问类成员的机制,它允许对象像数组那样通过索引来访问数据。当类需要管理一组相关数据,如客户列表,索引器就非常有用。一个...

    C#的属性,数据格式大全

    C#的属性是封装和保护数据的重要手段,通过合理设计属性的get和set访问器,可以实现数据验证和业务逻辑。同时,掌握各种数据格式的使用,能够帮助我们更好地处理和展示数据。理解这些基本概念和技巧,对于日常的C#...

    CSharp_Language_Specification(c#语言规范_原版)

    在这个例子中,`MyProperty`是一个抽象属性,其get和set访问器都是抽象的。任何继承自`BaseClass`的类都需要实现这个属性: ```csharp public class DerivedClass : BaseClass { public override int MyProperty {...

    c#属性全面探讨(代码+注释)

    在C#中,属性提供了一种语法糖,使得我们可以通过简洁的get和set访问器来操作私有字段,从而提高了代码的可读性和可维护性。下面将对C#属性的各个方面进行深入探讨。 ### 1. 属性的基本结构 属性通常由两部分组成...

    《物联网C#程序开发案例式教程》教学课件-第七章-面向对象编程02 c#经典案例.pptx

    访问器是用于访问字段的方法,包括 get 和 set 方法。get 方法用于获取字段的值,而 set 方法用于设置字段的值。 5. 属性的合法性 在面向对象编程中,属性的合法性是非常重要的。例如,在设定年龄属性时,我们需要...

    C#编程规则与技巧

    例如,可以通过属性来实现只读或只写的字段,也可以在属性的get和set访问器中加入逻辑判断,确保数据的有效性和一致性。 总结来说,C#编程规则与技巧涵盖了泛型编程的概念、实现机制、特点以及基本使用方法,还包括...

    详解C#中的接口属性以及属性访问器的访问限制

    接口属性是接口中声明的属性,它们不包含任何实现,只有属性的签名,即get和set访问器。接口属性的目的是为了规定实现该接口的类必须提供相应的属性。 接口属性的声明如下: ```csharp public interface ...

    C#实现访问Redis数据库

    本文将详细讲解如何使用C#语言来实现对Redis数据库的访问,以便充分利用其高效特性来提升应用性能。 首先,要实现C#访问Redis,我们需要一个客户端库。StackExchange.Redis是.NET开发者广泛使用的官方推荐库,它...

    计算机重要知识getandset.pdf

    `get`访问器返回`stuName`的值,`set`访问器则更新`stuName`的值。`value`关键字在setter中用于接收要赋给字段的新值。 2. **访问控制**: 属性的访问修饰符可以是public、private、protected、internal等,这决定...

Global site tag (gtag.js) - Google Analytics