C#中实体类的get、set的疑问,请大侠解答

publicintAge{get{return_age;}set{_age=value;}}publicintAge{get;set;}他们两个是一样的吗... public int Age
{
get{return _age;}
set{_age=value;}
}

public int Age
{
get;
set;
}
他们两个是一样的吗
展开
 我来答
bd376073795
2013-07-22 · TA获得超过1099个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:224万
展开全部
单纯就这两个的对比而言,是一样的,只是“手动”和“自动”的区别。
第二个只是一种简写,实际上编译器会帮你加一个私有成员。
你可以验证一下:编译代码,然后再反编译,你就会发现结果了。

但是……
不建议第二种写法,原因:
1、灵活性
比如要对年龄验证,输入负数时抛出异常,第二种没办法。
2、效率
如果有构造函数,参数是年龄。第一种你可以对私有成员赋值、第二种只能对属性赋值,效率上是第一种高。

另外,这两种写法在“封装”上是没什么区别的!
zljk0306
2013-07-22 · TA获得超过366个赞
知道小有建树答主
回答量:229
采纳率:90%
帮助的人:204万
展开全部
效果是一样的!但是实际应用有区别。
第一种写法比较灵活,_age 为私有成员,而对其的封装Age成为属性。通过属性来保护私有成员,可以做到对成员的访问控制,比如:
只读:
public int Age
{
get{return _age;}
}
只写
public int Age
{
set{_age=value;}
}
读写
public int Age
{
get{return _age;}
set{_age=value;}
}
_age作为私有成员在类的内部可以任意的操作,这体现的封装的好处,而外部只能通过Age这个属性来访问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-07-22 · TA获得超过105个赞
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:103万
展开全部
是的,简单的说,前者是用于自定义的获取或设置Age的值,如果不做特殊定制,就是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tgghfbf
2013-07-22 · TA获得超过381个赞
知道小有建树答主
回答量:272
采纳率:50%
帮助的人:201万
展开全部
一样的,后一种是简写形式的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2013-07-22 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
后一种写法是C# 3.0中的自动属性,也就是说如果没有其它的逻辑判断(比如对赋值进行判定等等操作),仅仅只是简单的赋值和取值 ,那就可以用后面那种简单的写法,反之仍然还要用上一种。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式