public class person
{
public string name;
} public class person
{
public string Name { set; get; }
}

  上面的两个类,第一个person存储的是name属性,由于是public属性,可以由其他类访问,第二个person的name属性通过了set、get进行了封装,get、set分别是可读可写。等价于如下代码

    public class person
{
private string name; public string Name
{ get { return name; } set { name = value; } }
}

  上面的代码中name的修饰符是private,Name是public,即在外部调用person时,并不知道你内部装的具体是个什么东西,他只能调用Name,对get、set进行读和写操作,name值并不能在其他类中进行操作。相当于是封装了一个类,内部的东西看不见,你只有get、set两个接口来操作这个类。

  在网上看到了一个很形象的比喻,person 就像银行里的自动取款机,你看不见里面的钱(name),但你能用set(存钱),用get(取钱)。name是一个私有字段,是封装在类中的,类以外的程序不能直接访问的。C#中get、set用法中,类的set和get成员是外部程序访问类内部属性的唯一方法,就像你去银行取钱,你不能直接从银行的保险柜里拿钱,而是银行营业人员把钱取出来给你的。

  除了读和写的作用之外,还可以用来判定非法字符

    class Person//声明一个Person类
{
private string job;//声明为private即在其他类中不可调用job
public string Apjob//属性后面不加()加了()就成了方法 例如Apjob()
{
get
{
return this.job;//当读取job值时执行的代码
}
set//当设置Apjob属性的使用执行的代码
{
if(value=="teacher")//可以用于判定非法字符
{
this.job = "doctor";
return;//用于跳出set而不执行下面的语句
}
this.job = value;//value是用户设置的值,固定使用
}
}
}
class Program
{
static void Main(string[] args)
{
Person p1=new Person();
p1.Apjob = "teacher";//执行set段
Console.WriteLine(p1.Apjob);//执行get段
Console.ReadKey();
}
}

  可看出,get、set用法中

  一是隐藏组件或类内部的真实成员;

  二是用来建立约束的,比如,实现“有你不行”这种约束;

  三是用来响应属性变化事件,当属性变化的时候做某事,只要写在set方法里就行。

  当你想读出或写入属性的值时,存取标志限定了被实现的语句。用于读出属性的值的存取标志记为关键字get,而要修改属性的值的读写符标志记为set。

2018.08.06

新手C#属性set,get的学习(部分转)2018.08.06的更多相关文章

  1. 新手C#构造函数、继承、组合的学习2018.08.06/07

    构造函数,是一种特殊的方法.主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同 ...

  2. 新手C#面向对象的学习2018.08.06

    class Person//声明一个Person类 { //类中的声明与Main中不同,类中声明的是字段而不是函数. public string gender; public string name= ...

  3. 新手C#类、对象、字段、方法的学习2018.08.05

    类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...

  4. 最棒的 JavaScript 学习指南(2018版)

    译者注:原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南.新人上手.Webpack.性能.基础概念.函数式编程.面试.教程案例.Async Await.并发.V8. ...

  5. C#的ComboBox学习使用2018.08.03

    ComboBox是一个有下拉列表的文本显示框,其text为当前的文本,item属性为项 comboBox1.Items.Add("); id = comboBox1.Text; 可以采用se ...

  6. C#登陆界面学习编写 2018.08.03

    简单的登陆界面的编写,在编写如下界面时,设置错误次数上限需要用到静态变量 public static int count;//计算错误次数(为静态变量) 可以防止点击登陆后次数被清空,在登陆后打开新的 ...

  7. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  8. QWidget属性,函数的学习

    我把所有属性重新按功能排了一遍,这样才能灌到自己脑子里,并且方便自己以后查找: -------------------- 颜色/渲染方式 -----------------------QWidget: ...

  9. AndroidManifest.xml中的application中的name属性 分类: android 学习笔记 2015-07-17 16:51 116人阅读 评论(0) 收藏

    被这个不起眼的属性折磨了一天,终于解决了. 由于项目需要,要合并两个android应用,于是拷代码,拷布局文件,拷values,所有的都搞定之后程序还是频频崩溃,一直没有找到原因,学android时间 ...

随机推荐

  1. ps/sql developer 登录远程服务器

    Ref PLSQL Developer远程登录的方法

  2. 判断一颗二叉树是否为二叉平衡树 python 代码

    输入一颗二叉树,判断这棵树是否为二叉平衡树.首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.因此判断一颗二叉平衡树的关键在于 ...

  3. javax.el.PropertyNotFoundException: Property 'imgUrl' not found on type java.lang.String

    严重: Servlet.service() for servlet jsp threw exception javax.el.PropertyNotFoundException: Property ' ...

  4. python的一些基本的建议

    一.编码风格 python程序要写的易于阅读 二.python代码的样式规则 遵循PEP8 4个spaces是一次缩排,不允许tabs,不允许混合使用space和tab,方法之间要有一个空行,类之间要 ...

  5. 便捷的Jenkins jswidgets

    很多时候我们在构建完成之后需要查看构建的状态,类似github 中的build Status 插件安装 搜索插件 使用 目前好像只支持自由项目的构建 代码集成 <!DOCTYPE html> ...

  6. C#多线程应用:子线程更新主窗体控件的值(一)

    我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到.在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录. 说起多线程之间的更 ...

  7. .NET委托解析(异步委托)

    上一篇我们了解到了,委托的基本感念,列举了几个委托的实例,并根据实例来反编译源码查看.NET 委托的内部实现,从浅入深的角度来详细的去解析委托的实质,本文将系上篇继续讨论异步委托的实现以及异步委托的源 ...

  8. Phonegap下localStorage使用实践

    HTML5的Web Storage API提供了两种客户端存储数据的方法 localStorage和sessionStorage. localStorage没有时间限制,程序升级也不会消失,可以满足持 ...

  9. 你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料

    你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料

  10. Oracle使用startup与startup force启动的区别

    1. startup 就是正常启动数据库,没什么好说的. 2. startup force 是shutdown abort + startup的组合,即强制关闭数据库+ 正常启动数据库,想快速重启数据 ...