310
|
I. J. Kennedy ShankarSangoli · 技术社区 · 15 年前 |
![]() |
1
184
在一个 related question Properties vs. Public Variables
|
![]() |
2
88
忽略API问题,我发现使用属性最有价值的是调试。 CLR调试器不支持数据断点(大多数本机调试器都支持)。因此,不可能在类上特定字段的读写上设置断点。这在某些调试场景中非常有限。 因为属性是作为非常精简的方法实现的,所以可以在读取和写入属性值时设置断点。这让他们在球场上有了很大的优势。 |
![]() |
3
78
将字段更改为属性会破坏合同(例如,要求重新编译所有引用代码)。因此,当您与其他类(任何公共(通常受保护)成员)有一个交互点时,您需要为未来的增长进行规划。要做到这一点,请始终使用属性。
|
![]() |
4
67
只是因为没人提到它:你不能在接口上定义字段。因此,如果您必须实现一个定义属性的特定接口,自动属性有时是一个非常好的特性。 |
![]() |
5
53
这是一个经常被忽视的巨大差异,在任何其他答案中都没有提及: . 您可以声明虚拟属性并重写它们,但不能对公共成员字段执行相同的操作。 |
![]() |
6
12
这都是关于版本控制和API稳定性的。在版本1中没有区别-但是在以后的版本中,如果您决定在版本2中使用某种类型的错误检查将此属性设置为属性,则不必更改API-除了属性的定义之外,任何地方都不需要更改代码。 |
![]() |
7
11
与公共字段相比,自动实现属性的另一个优点是,您可以将集合访问器设置为私有或受保护,从而使定义它的对象类比公共字段的对象类具有更好的控制能力。 |
![]() |
8
8
建立一个领域没有什么错
|
![]() |
9
1
如果只使用公共属性,那么灵活性就会降低。 在不违反合同的情况下,额外的灵活性是使用属性对我来说最重要的,而且,在我真正需要灵活性之前,自动生成是最有意义的。 |
![]() |
10
1
有一件事你可以用字段来做,但不能用属性(或者以前不能…我马上就来讨论)就是字段可以指定为
但是,随着C#9的变化,这一点也发生了变化,因此我们得到了以下有用的属性语法:
这表示“这可以从类外使用,但只能在对象初始化时设置”,因此字段的只读优势消失。 |
![]() |
11
0
我发现一件非常有用的事情以及所有的代码和测试原因是,如果它是一个属性vs一个字段,那么VisualStudioIDE会显示一个属性而不是字段的引用。 |
![]() |
12
0
我的pov做了一些研究
|
![]() |
Pikachu620 · 在Visual C中运行时编译# 6 年前 |
![]() |
N6151H · 使用annotate()包括django模型对象属性 6 年前 |
![]() |
Rekshino · 在编译时获取类的属性名,而不进行对象实例化 6 年前 |
![]() |
Mahhdy · VBA类模块:从类内的对象获取属性 6 年前 |
|
user5441558 · c中get前缀背后的原因# 6 年前 |
|
user9409572 · 无法更改属性的值 6 年前 |