说是在net3.0中可以这样写
public string test { get; set; }
而在3.0以前要:
private string _test;
public string test
{
get { return _test; }
set { _test = value; }
}
但是第一种写法,在.net 2.0中也可以用啊? 请教除了写法上节俭很多代码, 还有其他什么区别吗?
解决方案 »
- C# B/S模式下,Page_Load事件的判断问题
- C# 中窗体如何用软件模拟人工输入到网页的文本框中
- 字符所在字符串的位置
- Installshield制作安装包的问题
- b = (sbyte)~b; 我这样解释正确吗?
- 50分求一个SQL语句?高手请进
- 请问大家做测试的时候都用什么工具?
- C#DataGridView 一行添加两个按钮后,new EventHandler(CustomBtnEdit_Click)获取不到当前行
- 我是菜鸟,刚开始学习C# 有个关于SOCKET的问题急需大家帮助!高手拉兄弟一把!
- 如何获得文件名!
- C# Treeview請有經驗的幫忙實現一下
- 知道 坚石诚信 的ET99 加密狗的 大大进
在C# 2.0中:
private int _a;
public int A
{
get { return _a; }
set { _a= value; }
}
在C# 3.0及以上,完全可以写成:
public int A{ get; set; }
2.0中会出错? 我安装了vs2008,带了3.x,还没机会试验.
首先回答你的问题,两种写法没有区别。是等效的。3.0以后的版本这样写不过是为了看起来比较简洁。
然后分析下本质:
在.net中,属性的get和set编译后最终其实等效于两个函数。get_字段 和 set_字段。
第二种写法,编译器会自动的生成一个私有字段。
呃,谢谢提醒,刚用reflector看了下il 在2.0下无论用哪种写法,编译的都一样.
那就也不存在自动属性不能用在2.0了啊
private int _a;
public int A
{
get { return _a; }
set { _a= value; }
}
public int A{ get; set; }
跟public int A;
没有区别
public int A;
这样写就没有 get,set方法了啊