我曾经在很多地方看过,公开地公开这些内容并不是一个好主意,因为如果你以后想改变属性,你将不得不重新编译所有使用你的类的代码。 但是,在不可变类的情况下,我不明白为什么你需要改变属性 – 毕竟你不会为逻辑添加逻辑。 任何想法,我错过了什么? 差别的例子,对于那些比文本更容易阅读代码的人:) //Immutable Tuple using public readonly fields public class Tuple<T1,T2> { public readonly T1 Item1; public readonly T2 Item2; public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; } } //Immutable Tuple using public properties and private readonly fields public class Tuple<T1,T2> { private readonly T1 _Item1; […]
我们经常被告知我们应该通过为类字段创buildgetter和setter方法(C#中的属性)来保护封装,而不是将字段暴露给外部世界。 但是有很多时候,一个字段只是在那里保存一个值,并不需要任何计算来获取或设置。 对于这些我们都会做这个数字: public class Book { private string _title; public string Title { get{ return _title; } set{ _title = value; } } } 那么,我有一个自白,我不能写所有这些(真的,不必写,不得不看),所以我去stream氓,使用公共领域。 接下来是C#3.0,我看到他们添加了自动属性: public class Book { public string Title {get; set;} } 这是比较整洁的,我很感谢,但是真的,和公共领域有什么不同呢? public class Book { public string Title; }