属性的内部实现其实就是方法

我们平时写的代码:

 class Student
{
private int age;
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
}

编译器处理之后的代码:

 class Student
{
private int age;
//编译器处理之后的代码如下
public void set_Age(int value)
{
age = value;
}
public int get_Age()
{
return age;
}
}

那么对于自动实现的属性呢?

源代码:

	class Student
{
//自动实现的属性
public int Age{ get; set; }
}

处理之后:

	class Student
{
private int <>_age;//编译器随机生成的字段(存在一些C#不允许作为标识符的字符但CLR却可以,为了不与用户自定义字段冲突)
//编译器处理之后的代码如下
public void set_Age(int value)
{
<>_age = value;
}
public int get_Age()
{
return <>_age;
}
}

到现在你是否真的立即属性的实质了呢?让我们一起来看看下面这个属性吧!

	class Student
{
public int Age
{
get{
return Age;
}
set{
Age = value;
}
}
}

属性可以这样写?回答是当然可以,那么如何转化成对应的方法呢?

若果你真的理解了属性的实质,这就完全不是问题了。

	class Student
{
public void set_Age(int value)
{
set_Age(value);
}
public int get_Age()
{
return get_Age();
}
}

你会发现这两个方法都是无限递归的死循环,是不是挺有意思的。。。_

最新文章

  1. Node基础篇(文件操作)
  2. SIFT中的尺度空间和传统图像金字塔
  3. CSS3实现几个常用的网页小效果
  4. xpath基础知识
  5. [美]莫提默 J. 艾德勒《如何阅读一本书》
  6. js中正则表达式 书写方法
  7. Windows server 2008 下iis7 架设ftp服务器
  8. Easyui 排序时 自动向后排传sort order 你妹真坑爹
  9. 【开发笔记】Spring的配置文件
  10. [转] Spring Security(01)——初体验
  11. 【转】jQuery Validate验证框架详解
  12. python输入
  13. Java语法基础学习DayTwenty(反射机制续)
  14. Druid密码加密
  15. kudu的写数据流程
  16. winform 子窗体调用父窗体中的方法
  17. django的数据库操作
  18. python2.7安装第三方库错误:UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xcb in position 0
  19. C#中标准Dispose模式的实现(转载)
  20. 测试开发linux面试之三:后台进程之操作

热门文章

  1. 【SPOJ-GSHOP】Rama and Friends【贪心】【细节】
  2. 从字节码指令看重写在JVM中的实现
  3. Android开发工具---SQLiteManager插件
  4. iOS CoreData 介绍和使用(以及一些注意事项)
  5. Caffe学习--Layer分析
  6. Codeforces Round #289 Div 2
  7. BZOJ2225: [Spoj 2371]Another Longest Increasing CDQ分治,3维LIS
  8. 关于VS2013 Browser Link 新功能
  9. oracle和mysql的分页
  10. Linux系统下安装配置 OpenLDAP + phpLDAPadmin