公共 C# 字段

2004 年 2 月 4 日

当我第一次接触 C# 时,我从一开始就喜欢属性的概念。C++/Java 的 getX 和 setX 约定对我来说总是很愚蠢,写 obj.X = other.X 更自然。为属性提供 get 和 set 方法将一个常见约定变成了语言的自然支持特性。

我喜欢的另一件事是,从语言的角度来看,属性和字段看起来是一样的。因此,如果我有一个可以读写字段 x,我可以直接将其声明为字段。我不担心这会违反封装,因为如果我想做一些更花哨的事情,我以后可以将其替换为属性。这节省了大量编写愚蠢的访问器函数的麻烦。

唉,并非一切都那么简单。字段和属性在程序文本方面具有相同的访问权限,但它们在反射中的表示方式不同。因此,如果您在字段和属性之间切换,各种使用反射的工具将被破坏。

所以现在我必须为可访问的数据值编写愚蠢的访问器函数。唉。(或者使用 Ruby。)