C#篇(二)——属性的实质
2024-08-31 14:57:38
属性的内部实现其实就是方法
我们平时写的代码:
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();
}
}
你会发现这两个方法都是无限递归的死循环,是不是挺有意思的。。。_
最新文章
- Node基础篇(文件操作)
- SIFT中的尺度空间和传统图像金字塔
- CSS3实现几个常用的网页小效果
- xpath基础知识
- [美]莫提默 J. 艾德勒《如何阅读一本书》
- js中正则表达式 书写方法
- Windows server 2008 下iis7 架设ftp服务器
- Easyui 排序时 自动向后排传sort order 你妹真坑爹
- 【开发笔记】Spring的配置文件
- [转] Spring Security(01)——初体验
- 【转】jQuery Validate验证框架详解
- python输入
- Java语法基础学习DayTwenty(反射机制续)
- Druid密码加密
- kudu的写数据流程
- winform 子窗体调用父窗体中的方法
- django的数据库操作
- python2.7安装第三方库错误:UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xcb in position 0
- C#中标准Dispose模式的实现(转载)
- 测试开发linux面试之三:后台进程之操作
热门文章
- 【SPOJ-GSHOP】Rama and Friends【贪心】【细节】
- 从字节码指令看重写在JVM中的实现
- Android开发工具---SQLiteManager插件
- iOS CoreData 介绍和使用(以及一些注意事项)
- Caffe学习--Layer分析
- Codeforces Round #289 Div 2
- BZOJ2225: [Spoj 2371]Another Longest Increasing CDQ分治,3维LIS
- 关于VS2013 Browser Link 新功能
- oracle和mysql的分页
- Linux系统下安装配置 OpenLDAP + phpLDAPadmin