为了账号安全,请及时绑定邮箱和手机立即绑定

为什么使用简单属性而不是C#中的字段?

为什么使用简单属性而不是C#中的字段?

C#
小唯快跑啊 2019-11-19 15:09:23
人们似乎在教条上坚持在田野上使用公共财产,但是为什么在简单财产的情况下它是如此重要?怎么public int Foo { get; set; }与public int Foo;?我不由自主地想到了两者之间的一些实际区别:使用反射访问成员(稀有,大多数体面的反射算法将解决差异)第二项允许您将字段用作ref和out参数的有效参数,这似乎是使用字段版本的优势字段在远程处理中不起作用(可能我从未使用过远程处理,但我想他们不会使用)?除了这些相当罕见的情况外,稍后将Foo更改为计算属性会导致代码行更改为0。
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

属性是一种语言元素,在逻辑上表示该类正在建模的事物的属性。汽车类为汽车模型;颜色是汽车的属性;因此,颜色是Car的属性。

字段是一种语言元素,表示类的实现细节。您的汽车没有“色域”,因此程序在汽车中的表示形式不应公开名为“颜色”的域。它可能包含一个私有的实现细节,由此属性Color由一个字段实现,但这是一个私有的实现细节,而不是模型的公共可访问部分。


查看完整回答
反对 回复 2019-11-19
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

主要是因为约定。

一个可靠的论据是,如果您以后需要从字段更改为属性,则所有引用您的程序集都需要重新编译。

反射确实会偶尔出现,但很少。某些序列化类型基于属性。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 457 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信