关于C#中的属性(欢迎讨论)

longhui666888 2009-07-29 10:08:19
C#中可以这样写属性

string _name;
public string Name
{
get{return _name;}
set{_name=value;}
}


也可以这样写

public string Name{get;set;}


请问这两种写法有什么区别?难道只是第一种可以自定义设置,返回值么?
...全文
149 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
einsteintheory 2009-08-28
  • 打赏
  • 举报
回复
问一下:

“只读”自动实现的属性如
public string Name { get; private set; }
怎样初值化Name的值呢?
longhui666888 2009-07-30
  • 打赏
  • 举报
回复
谢谢大家的回复,结帖了
cjnet 2009-07-29
  • 打赏
  • 举报
回复
public string Name{get;set;} 這是自動屬性的寫法,兩種方法生成的IL 代碼是一樣的,不過自動屬性寫會自動產生一個私有變量。這種申明方法一般在LINQ的Table 對應Filed 必須要這樣申明. 具體怎么樣用ID DASM 查看一下就清楚了
rainsome 2009-07-29
  • 打赏
  • 举报
回复
只在北京招?

可惜。

上海有要人的吗?

[Quote=引用 8 楼 joss2009 的回复:]
大虾仁们,C#/asp.net我才学的,在公司实习,我公司现在还在招C#的开发人员,如果有愿意来的,请把简历发往wangningning@littlejoss.com
[/Quote]
accpyy 2009-07-29
  • 打赏
  • 举报
回复
2.0下第二种写法报错:
get”必须声明主体,因为它未标记为 abstract 或 extern
Hide1984 2009-07-29
  • 打赏
  • 举报
回复
public string Name{get;set;}

3.0里在编译的时候会自动帮你补全成

public string Name
{
get{return _name;}
set{_name=value;}
}


其实属性这个东西没什么特别的,就是一个public字段加两个方法而已~
accpyy 2009-07-29
  • 打赏
  • 举报
回复
没用过第二种,只知道第一种
24K純帥 2009-07-29
  • 打赏
  • 举报
回复
新人来报道,两种写法一样滴
cszg_zjy 2009-07-29
  • 打赏
  • 举报
回复
一般都用第一种啊,第二种通常写在接口和抽象类里面。
微创社(MCC) 2009-07-29
  • 打赏
  • 举报
回复
C#3.0 自动实现的属性

有一些小小的限制:
[1]自动实现的属性必须同时声明 get 和 set 访问器。
[2]若要创建 readonly 自动实现属性,请给予它 private set 访问器。
[3]自动实现的属性 (Property) 不允许具有属性 (Attribute)。
[4]如果您必须在属性 (Property) 的后备字段上使用属性 (Attribute),则应该只创建常规属性 (Property)。
mbh0210 2009-07-29
  • 打赏
  • 举报
回复
一般都用第一种,可以进行处理啥的比较方便。
第二种少写代码
wdgphc 2009-07-29
  • 打赏
  • 举报
回复
我一般还是用第一种写法。因为我的set一般是通过计算等的。
joss2009 2009-07-29
  • 打赏
  • 举报
回复
大虾仁们,C#/asp.net我才学的,在公司实习,我公司现在还在招C#的开发人员,如果有愿意来的,请把简历发往wangningning@littlejoss.com
hecker728 2009-07-29
  • 打赏
  • 举报
回复
如果在属性中加入其它代码的话,就只能使用第一种

第二种只是在一种简写方式
fengjian_428 2009-07-29
  • 打赏
  • 举报
回复
简化了写法 但只有针对简单的情况才有用
北京的雾霾天 2009-07-29
  • 打赏
  • 举报
回复
不过这个写法在接口里(interface)里是接口的属性定义。
jinjazz 2009-07-29
  • 打赏
  • 举报
回复
这两个写法是等效的。
阿非 2009-07-29
  • 打赏
  • 举报
回复
第2种 是 c# 3.0 的新特性 Automatic Properties

当然 你也可以按照你自己的理解
北京的雾霾天 2009-07-29
  • 打赏
  • 举报
回复
一种偷懒的写法。
vrhero 2009-07-29
  • 打赏
  • 举报
回复
对C# 3.0以上两者几乎没有区别...C# 3.0以下不支持第二种...

如果需要在get或set访问器中写额外代码,则第二种不可用...
加载更多回复(3)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧