腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
为什么我应该使用自动实现的属性而不是字段?
使用自动实现的属性而不是字段有以下几个优势:
封装性:自动实现的属性可以将字段的访问限制在类内部,通过公开的get和set方法来访问和修改属性的值。这样可以隐藏内部实现细节,提高代码的封装性和安全性。
可控性:通过自动实现的属性,可以在get和set方法中添加额外的逻辑,例如对属性值进行验证、计算或转换。这样可以确保属性的值符合预期,并且可以在属性被访问或修改时执行相应的操作。
可扩展性:使用自动实现的属性可以方便地修改属性的实现方式,而不需要修改使用该属性的代码。例如,如果需要在属性的get方法中添加缓存机制,只需修改属性的实现,而不需要修改使用该属性的代码。
兼容性:自动实现的属性可以与其他代码兼容,因为它们可以像字段一样使用。其他代码可以直接访问属性,而不需要修改原有的访问方式。
可维护性:使用自动实现的属性可以减少代码的冗余,提高代码的可读性和可维护性。相比于直接访问字段,使用属性可以更清晰地表达代码的意图,使代码更易于理解和修改。
腾讯云相关产品和产品介绍链接地址:
云服务器(CVM):
https://cloud.tencent.com/product/cvm
云数据库 MySQL 版(CDB):
https://cloud.tencent.com/product/cdb
云原生容器服务(TKE):
https://cloud.tencent.com/product/tke
人工智能机器学习平台(AI Lab):
https://cloud.tencent.com/product/ailab
物联网开发平台(IoT Explorer):
https://cloud.tencent.com/product/iothub
移动推送服务(信鸽):
https://cloud.tencent.com/product/tpns
云存储(COS):
https://cloud.tencent.com/product/cos
区块链服务(BCS):
https://cloud.tencent.com/product/bcs
腾讯云元宇宙:
https://cloud.tencent.com/solution/virtual-universe
相关搜索:
prolog -为什么我应该使用'dif‘而不是'=\=’?
我应该总是使用<%:而不是<%=
为什么我要选择私有只读自动属性而不是只读字段?[已关闭]
为什么我应该使用$ _GET和$ _POST而不是$ _REQUEST?
为什么我应该使用方法而不是使用__init__()?
使用CodeDOM生成字段而不是属性
我应该使用JSPX而不是JSP吗?
为什么我应该使用$cacheFactory而不是手动获取/设置数据?
我是否应该使用useselector/useDispatch而不是mapStateToProps
为什么我生成的带有接口的程序集实现为方法而不是属性?
为什么我不应该使用不可变的POJO而不是JavaBeans?
为什么我应该在java中使用(String[])null而不是null?
在Perl中我应该使用什么而不是printf?
我什么时候应该使用结构而不是类?
我应该何时使用h:outputLink而不是h:commandLink?
我应该使用依赖注入而不是类函数吗?
我应该如何使用stream.cast而不是类型?
您应该在哪里使用BlockingQueue实现而不是简单队列实现?
为什么我应该使用fusion.js by uber而不是create-react-app?
为什么SortedList实现使用ThrowHelper而不是直接抛出?
相关搜索:
prolog -为什么我应该使用'dif‘而不是'=\=’?
我应该总是使用<%:而不是<%=
为什么我要选择私有只读自动属性而不是只读字段?[已关闭]
为什么我应该使用$ _GET和$ _POST而不是$ _REQUEST?
为什么我应该使用方法而不是使用__init__()?
使用CodeDOM生成字段而不是属性
我应该使用JSPX而不是JSP吗?
为什么我应该使用$cacheFactory而不是手动获取/设置数据?
我是否应该使用useselector/useDispatch而不是mapStateToProps
为什么我生成的带有接口的程序集实现为方法而不是属性?
为什么我不应该使用不可变的POJO而不是JavaBeans?
为什么我应该在java中使用(String[])null而不是null?
在Perl中我应该使用什么而不是printf?
我什么时候应该使用结构而不是类?
我应该何时使用h:outputLink而不是h:commandLink?
我应该使用依赖注入而不是类函数吗?
我应该如何使用stream.cast而不是类型?
您应该在哪里使用BlockingQueue实现而不是简单队列实现?
为什么我应该使用fusion.js by uber而不是create-react-app?
为什么SortedList实现使用ThrowHelper而不是直接抛出?
页面内容是否对你有帮助?
有帮助
没帮助
相关·
内容
文章
问答
(9999+)
视频
沙龙
5
回答
为什么
我
应该
使用
自动
实现
的
属性
而
不是
字段
?
、
在这两者之间:class WithProperty public string MyString {get; set;}带
字段
:{public string MyString;显然
我
应该
选第一个。
为什么
?
我
听过这样
的
争论,这里
的
重点是允许接口更改,但如果
我
有第二个接口,并将其更改为第一个,则其他任何代码都不
应该
更改。在重新编译
浏览 3
提问于2010-07-08
得票数 13
回答已采纳
1
回答
为什么
我
应该
使用
属性
而
不是
实现
接口呢?
、
、
、
、
为什么
要
使用
属性
而
不是
从接口继承?这难道不比在C#(
属性
)中添加一个全新
的
概念更容易
实现
接口吗?
浏览 2
提问于2013-08-19
得票数 2
回答已采纳
1
回答
用私有
属性
替换类中
的
每个
字段
是一种不好
的
做法吗?
、
、
、
、
我
倾向于
使用
私有
属性
而
不是
私有
字段
,因为必要时可以对它们进行扩展,所以我
的
大多数模型类如下所示:{ private bool IsSomething { get; set; } } 换句话说,
我
通常用私有
属性
代替私有
字段
浏览 1
提问于2014-05-08
得票数 0
7
回答
有理由
使用
自动
实现
的
属性
而
不是
手动
实现
的
属性
吗?
、
、
、
我
理解
属性
相对于
字段
的
优势,但我觉得
使用
自动
实现
的
属性
比
使用
手动
实现
的
属性
并不能真正提供任何优势,只是让代码看起来更简洁一点。} 主要是因为如果
我
想做任何类型
的
get和set
的
自定义
实现
,
我
必须创建
我
自己
的
属性
,无论如何都
浏览 2
提问于2011-11-14
得票数 33
回答已采纳
3
回答
在类中分配给
自动
实现
的
属性
与它们
的
支持
字段
之间有什么区别?
、
、
、
、
在
我
开始
使用
自动
实现
的
属性
之前,
我
被告知,当在构造函数中分配
属性
时(因为有可能生成
属性
read only),
我
应该
直接为
属性
分配私有成员(我们通常会在
属性
的
前面加上下划线来命名该
属性
。当我切换到
使用
自动
实现
的
属性
时,
我
保留
浏览 0
提问于2019-02-26
得票数 1
1
回答
如何在C#中
的
类中创建一个
自动
实现
的
list
属性
?
、
、
、
,因为类
的
字段
应该
是私有的,而
应该
使用
公共
属性
进行访问。
我
决定将这些
字段
更改为
自动
实现
的
属性
,因为
我
目前不需要在
属性
中进行任何验证:{ publicThing> Things { get; set; } public Pe
浏览 2
提问于2015-02-10
得票数 0
回答已采纳
3
回答
为什么
我
要
使用
自动
实现
而
不是
封装?
、
、
、
private int someInt; {}
我
被告知总是封装所有变量,
而
不是
将它们声明为公共变量,
而
自动
实现
似乎就是这样做
的
。这
不是
取消了封装
的
目的,因为<em
浏览 0
提问于2018-06-16
得票数 0
回答已采纳
2
回答
属性
和
自动
实现
、
、
我
在2013年outlook
的
VSTO加载项中
使用
.NET 4.5。
我
很难完全掌握
属性
和访问器。当您只编写get;set;
而
不是
get { //code }等时,
自动
实现
的
访问器也会给我带来麻烦。
我
的
字典从未在类之外或在任何派生类中被访问,所以有理由
使用
属性
吗?
我
不
使用
任何特殊
的</
浏览 4
提问于2015-05-25
得票数 10
回答已采纳
7
回答
为什么
不能只读
属性
呢?
、
这个问题出现在
的
评论中。无法拥有只读
属性
是
使用
字段
而
不是
属性
的
一个潜在原因。public int Width { get { return _width; } }}编辑(澄清):您可以在第一个示例中
实现
此功能。但是
浏览 4
提问于2010-01-30
得票数 33
回答已采纳
3
回答
为什么
我
应该
使用
附加
属性
而
不是
常规依赖
属性
?
、
、
= (string)button.GetValue(TextBlock.TextProperty); // text is "text" 这就引起了人们
的
疑问,
为什么
首先会有附加
的</em
浏览 4
提问于2014-08-07
得票数 0
1
回答
C#接口中
的
自动
实现
属性
、
我
指的是Microsoft -
的
文档。它们指出,当在get或set中不需要额外
的
逻辑时,
自动
实现
的
属性
基本上是没有主体
的
属性
。
自动
实现
的
属性
声明私有实例支持
字段
,接口可能不声明实例
字段
。”这
不是
冲突
的
上述声明,我们不能声明
自动
实现
的
<em
浏览 5
提问于2021-01-09
得票数 1
回答已采纳
2
回答
为什么
我
应该
使用
常量顶点
属性
而
不是
制服?
、
我
已经准备好了关于常量顶点
属性
和Uniforms.Have
的
几个主题,找到了一些,但不明白
为什么
我
需要它们。看来
我
总能用制服代替履历。对他们有什么用处吗?
浏览 2
提问于2015-05-19
得票数 2
回答已采纳
4
回答
将Android
自动
完成中
的
选定内容转换为字符串
、
我
刚刚
实现
了一个文本
字段
的
自动
完成,它
使用
一个在线
的
webservice,基于Stackoverflow:上
的
这个答案当我选择一个建议时,<em
浏览 2
提问于2011-09-12
得票数 3
回答已采纳
5
回答
带有和不带有{ get;set;}
的
属性
我
是C#新手public string MyValue;public string MyValue { get; set; }谢谢
浏览 30
提问于2011-03-05
得票数 29
回答已采纳
1
回答
为什么
我
要选择私有只读
自动
属性
而
不是
只读
字段
?[已关闭]
、
更新问题,以便可以通过以下方式
使用
事实和引用回答问题编辑此帖子..。 3天前就关门了。改进此问题 一篇关于 Microsoft C# 6.0 变化
的
文章介绍了只读
自动
属性
和声明提供只读
自动
属性
和声明(
我
强调): 支持
自动
属性
初始化器
的
一个有趣
的
结果是,它消除了早期版本中需要显式
字段
声明
的
许多情况(...)另一方面,声明只读
字段
的
浏览 33
提问于2021-02-26
得票数 -1
回答已采纳
1
回答
C#构造函数初始化
属性
而
不是
字段
?
、
、
、
假设您必须
使用
构造函数来初始化某些
字段
..。class Foo private int price; { }
我
知道构造函数通常会初始化一些
字段
,但是如果
我
用它初始化
属性
,会有什么不同。price { get; set; } {
浏览 1
提问于2017-04-09
得票数 0
回答已采纳
2
回答
编译器对在循环期间保持静态
的
属性
的
优化
、
、
我
在读。题为“避免重复
字段
或
属性
访问”一节包含了一条指南: {} 注意,如果这些是
字段
,编译器可能会
自动
进行优化。如果它们是
属性
,则可
浏览 1
提问于2016-01-29
得票数 7
回答已采纳
2
回答
WCF序列化和AutoImplemented
属性
、
、
、
、
我
正在试验WCF RESTful web服务,但我在
自动
实现
属性
方面遇到了问题。
我
有一个名为DeviceDescriptor
的
类,定义如下:{ public string DisplayName { get; set; }
我
有一个
应该
返回DeviceDescriptors列表
的
RE
浏览 0
提问于2009-09-26
得票数 7
回答已采纳
2
回答
有办法避免FieldAccessException吗?
、
由于从列名到实体类型上
的
属性
的
映射存储在实体类型中,所以当只需要
使用
属性
的
子集时,我们可以轻松地构造基本对象。,调用GetValues,构造新对象并添加到列表,对于所有行,356msIDataReader,调用GetValues,构造新对象,
使用
反射将值复制到
属性
,~10.500 use (29x step 3.) ) 我们缓存所涉及
的
反射,但仍然有太多
的
开销。由于所涉及
的
对象中有99%是带有(1或
浏览 1
提问于2011-02-11
得票数 3
回答已采纳
2
回答
Apache如何从java中
的
DropdownChoice检索选定
的
值
、
、
、
Java类:这是
我
为select菜单创建下拉选择对象并将其添加到表单中
的
方法。
我
在selectedBillableObject类中创建了变量ReportCriteria,并添加了setter和getter。但我无法在此方法中转换它以将其添加到表单中,因为这是类型转换问题。但是,当我试图在selectedBillablePorject中打印值时,它是空
的
。
浏览 6
提问于2020-11-18
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
我为什么推荐大家使用 Nginx 而不是 Apache?
为什么你的下一个API应该是GraphQL而不是REST
为什么我越来越喜欢用 Apple Music,而不是其他的音乐app
为什么负载优先使用光伏发的电而不是从电网取电?
为什么 dYdX选择推出自己的链而不是继续使用L2?
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
实时音视频
活动推荐
运营活动
广告
关闭
领券