腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
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‘而不是'=\=’?
为什么使用数组而不是BT实现段树
为什么我不应该使用不可变的POJO而不是JavaBeans?
为什么我应该使用$ _GET和$ _POST而不是$ _REQUEST?
为什么我应该使用$cacheFactory而不是手动获取/设置数据?
为什么我应该使用fusion.js by uber而不是create-react-app?
为什么我应该使用方法而不是使用__init__()?
为什么我应该在java中使用(String[])null而不是null?
为什么我生成的带有接口的程序集实现为方法而不是属性?
为什么我要选择私有只读自动属性而不是只读字段?[已关闭]
相关搜索:
prolog -为什么我应该使用'dif‘而不是'=\=’?
为什么使用数组而不是BT实现段树
为什么我不应该使用不可变的POJO而不是JavaBeans?
为什么我应该使用$ _GET和$ _POST而不是$ _REQUEST?
为什么我应该使用$cacheFactory而不是手动获取/设置数据?
为什么我应该使用fusion.js by uber而不是create-react-app?
为什么我应该使用方法而不是使用__init__()?
为什么我应该在java中使用(String[])null而不是null?
为什么我生成的带有接口的程序集实现为方法而不是属性?
为什么我要选择私有只读自动属性而不是只读字段?[已关闭]
页面内容是否对你有帮助?
有帮助
没帮助
相关·
内容
文章
问答
(9999+)
视频
沙龙
5
回答
为什么
我
应该
使用
自动
实现
的
属性
而
不是
字段
?
c#
、
.net
在这两者之间:class WithProperty public string MyString {get; set;}带
字段
:{public string MyString;显然
我
应该
选第一个。
为什么
?
我
听过这样
的
争论,这里
的
重点是允许接口更改,但如果
我
有第二个接口,并将其更改为第一个,则其他任何代码都不
应该
更改。在重新编译
浏览 3
提问于2010-07-08
得票数 13
回答已采纳
1
回答
为什么
我
应该
使用
属性
而
不是
实现
接口呢?
c#
、
serialization
、
reflection
、
interface
、
attributes
为什么
要
使用
属性
而
不是
从接口继承?这难道不比在C#(
属性
)中添加一个全新
的
概念更容易
实现
接口吗?
浏览 2
提问于2013-08-19
得票数 2
回答已采纳
1
回答
用私有
属性
替换类中
的
每个
字段
是一种不好
的
做法吗?
c#
、
properties
、
coding-style
、
naming-conventions
、
conventions
我
倾向于
使用
私有
属性
而
不是
私有
字段
,因为必要时可以对它们进行扩展,所以我
的
大多数模型类如下所示:{ private bool IsSomething { get; set; } } 换句话说,
我
通常用私有
属性
代替私有
字段
浏览 1
提问于2014-05-08
得票数 0
7
回答
有理由
使用
自动
实现
的
属性
而
不是
手动
实现
的
属性
吗?
c#
、
properties
、
field
、
encapsulation
我
理解
属性
相对于
字段
的
优势,但我觉得
使用
自动
实现
的
属性
比
使用
手动
实现
的
属性
并不能真正提供任何优势,只是让代码看起来更简洁一点。} 主要是因为如果
我
想做任何类型
的
get和set
的
自定义
实现
,
我
必须创建
我
自己
的
属性
,无论如何都
浏览 2
提问于2011-11-14
得票数 33
回答已采纳
3
回答
在类中分配给
自动
实现
的
属性
与它们
的
支持
字段
之间有什么区别?
programming-practices
、
.net
、
efficiency
、
vb.net
、
properties
在
我
开始
使用
自动
实现
的
属性
之前,
我
被告知,当在构造函数中分配
属性
时(因为有可能生成
属性
read only),
我
应该
直接为
属性
分配私有成员(我们通常会在
属性
的
前面加上下划线来命名该
属性
。当我切换到
使用
自动
实现
的
属性
时,
我
保留
浏览 0
提问于2019-02-26
得票数 1
1
回答
如何在C#中
的
类中创建一个
自动
实现
的
list
属性
?
c#
、
list
、
class
、
properties
,因为类
的
字段
应该
是私有的,而
应该
使用
公共
属性
进行访问。
我
决定将这些
字段
更改为
自动
实现
的
属性
,因为
我
目前不需要在
属性
中进行任何验证:{ publicThing> Things { get; set; } public Pe
浏览 2
提问于2015-02-10
得票数 0
回答已采纳
3
回答
为什么
我
要
使用
自动
实现
而
不是
封装?
c#
、
private
、
encapsulation
、
public
private int someInt; {}
我
被告知总是封装所有变量,
而
不是
将它们声明为公共变量,
而
自动
实现
似乎就是这样做
的
。这
不是
取消了封装
的
目的,因为<em
浏览 0
提问于2018-06-16
得票数 0
回答已采纳
2
回答
属性
和
自动
实现
c#
、
properties
、
field
我
在2013年outlook
的
VSTO加载项中
使用
.NET 4.5。
我
很难完全掌握
属性
和访问器。当您只编写get;set;
而
不是
get { //code }等时,
自动
实现
的
访问器也会给我带来麻烦。
我
的
字典从未在类之外或在任何派生类中被访问,所以有理由
使用
属性
吗?
我
不
使用
任何特殊
的</
浏览 4
提问于2015-05-25
得票数 10
回答已采纳
7
回答
为什么
不能只读
属性
呢?
c#
、
properties
这个问题出现在
的
评论中。无法拥有只读
属性
是
使用
字段
而
不是
属性
的
一个潜在原因。public int Width { get { return _width; } }}编辑(澄清):您可以在第一个示例中
实现
此功能。但是
浏览 4
提问于2010-01-30
得票数 33
回答已采纳
3
回答
为什么
我
应该
使用
附加
属性
而
不是
常规依赖
属性
?
wpf
、
dependency-properties
、
attached-properties
= (string)button.GetValue(TextBlock.TextProperty); // text is "text" 这就引起了人们
的
疑问,
为什么
首先会有附加
的</em
浏览 4
提问于2014-08-07
得票数 0
1
回答
C#接口中
的
自动
实现
属性
c#
、
properties
我
指的是Microsoft -
的
文档。它们指出,当在get或set中不需要额外
的
逻辑时,
自动
实现
的
属性
基本上是没有主体
的
属性
。
自动
实现
的
属性
声明私有实例支持
字段
,接口可能不声明实例
字段
。”这
不是
冲突
的
上述声明,我们不能声明
自动
实现
的
<em
浏览 5
提问于2021-01-09
得票数 1
回答已采纳
2
回答
为什么
我
应该
使用
常量顶点
属性
而
不是
制服?
opengl
、
opengl-es
我
已经准备好了关于常量顶点
属性
和Uniforms.Have
的
几个主题,找到了一些,但不明白
为什么
我
需要它们。看来
我
总能用制服代替履历。对他们有什么用处吗?
浏览 2
提问于2015-05-19
得票数 2
回答已采纳
4
回答
将Android
自动
完成中
的
选定内容转换为字符串
android
、
autocomplete
我
刚刚
实现
了一个文本
字段
的
自动
完成,它
使用
一个在线
的
webservice,基于Stackoverflow:上
的
这个答案当我选择一个建议时,<em
浏览 2
提问于2011-09-12
得票数 3
回答已采纳
5
回答
带有和不带有{ get;set;}
的
属性
c#
我
是C#新手public string MyValue;public string MyValue { get; set; }谢谢
浏览 30
提问于2011-03-05
得票数 29
回答已采纳
1
回答
为什么
我
要选择私有只读
自动
属性
而
不是
只读
字段
?[已关闭]
c#
、
c#-6.0
更新问题,以便可以通过以下方式
使用
事实和引用回答问题编辑此帖子..。 3天前就关门了。改进此问题 一篇关于 Microsoft C# 6.0 变化
的
文章介绍了只读
自动
属性
和声明提供只读
自动
属性
和声明(
我
强调): 支持
自动
属性
初始化器
的
一个有趣
的
结果是,它消除了早期版本中需要显式
字段
声明
的
许多情况(...)另一方面,声明只读
字段
的
浏览 33
提问于2021-02-26
得票数 -1
回答已采纳
1
回答
C#构造函数初始化
属性
而
不是
字段
?
c#
、
constructor
、
properties
、
field
假设您必须
使用
构造函数来初始化某些
字段
..。class Foo private int price; { }
我
知道构造函数通常会初始化一些
字段
,但是如果
我
用它初始化
属性
,会有什么不同。price { get; set; } {
浏览 1
提问于2017-04-09
得票数 0
回答已采纳
2
回答
编译器对在循环期间保持静态
的
属性
的
优化
c#
、
optimization
、
compiler-optimization
我
在读。题为“避免重复
字段
或
属性
访问”一节包含了一条指南: {} 注意,如果这些是
字段
,编译器可能会
自动
进行优化。如果它们是
属性
,则可
浏览 1
提问于2016-01-29
得票数 7
回答已采纳
2
回答
WCF序列化和AutoImplemented
属性
c#
、
xml
、
wcf
、
serialization
、
rest
我
正在试验WCF RESTful web服务,但我在
自动
实现
属性
方面遇到了问题。
我
有一个名为DeviceDescriptor
的
类,定义如下:{ public string DisplayName { get; set; }
我
有一个
应该
返回DeviceDescriptors列表
的
RE
浏览 0
提问于2009-09-26
得票数 7
回答已采纳
2
回答
有办法避免FieldAccessException吗?
.net
、
reflection.emit
由于从列名到实体类型上
的
属性
的
映射存储在实体类型中,所以当只需要
使用
属性
的
子集时,我们可以轻松地构造基本对象。,调用GetValues,构造新对象并添加到列表,对于所有行,356msIDataReader,调用GetValues,构造新对象,
使用
反射将值复制到
属性
,~10.500 use (29x step 3.) ) 我们缓存所涉及
的
反射,但仍然有太多
的
开销。由于所涉及
的
对象中有99%是带有(1或
浏览 1
提问于2011-02-11
得票数 3
回答已采纳
2
回答
Apache如何从java中
的
DropdownChoice检索选定
的
值
java
、
html
、
wicket
、
dropdownchoice
Java类:这是
我
为select菜单创建下拉选择对象并将其添加到表单中
的
方法。
我
在selectedBillableObject类中创建了变量ReportCriteria,并添加了setter和getter。但我无法在此方法中转换它以将其添加到表单中,因为这是类型转换问题。但是,当我试图在selectedBillablePorject中打印值时,它是空
的
。
浏览 6
提问于2020-11-18
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
深入理解backing field
Python元类编程
解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2
Kotlin 什么是幕后字段?
怎样实现良好的数据库设计?
热门
标签
更多标签
云服务器
即时通信 IM
ICP备案
对象存储
实时音视频
活动推荐
运营活动
广告
关闭
领券