我对C#比较陌生,但我认为属性是一件很棒的事情。事实上它们如此出色,以至于我看不到使用字段的任何真正优势。即使对于私有字段,似乎属性提供的灵活性和模块性最多只能避免严重的麻烦,最坏的情况下根本没有任何效果。
我唯一能看到字段的优势是您可以在行内初始化它们。但是大多数时间,您都想在构造函数中初始化它们。如果您没有使用行内初始化,那么除了用来支持属性,还有什么理由不一直使用属性呢?
编辑:有些人提出需要用字段(显式或自动地)支持属性。 让我们澄清我的问题:除了用来支持属性之外,是否有使用字段的任何理由?也就是说,SomeType someField;
何时比 SomeType SomeProperty { get; set; }
更可取?
编辑2:DanM、Skurmedel和Seth都给出了非常有用的答案。 我接受了DanM的答案,因为它是最完整的,但如果有人能够将他们的回答总结成一个答案,我也会很高兴接受。
SomeType SomeProperty { get; } = new SomeType();
,但是你说的readonly
关键字是什么意思? - Sebastian Werk