
How can I access the backing variable of an auto-implemented property?在过去,我们声明的属性是这样的:
现在我们可以做:
我的问题是,如何访问使用该符号自动创建的私有变量? 我宁愿访问私有变量,而不访问公共访问器"年龄"。 是否存在访问私有变量的默认符号,或者只是不可能? 新的自动属性的目的是减少仅具有简单属性的情况下所需编写的样板代码的数量,该简单属性在get或set中不需要任何特殊逻辑。 如果要访问这些属性使用的私有成员,通常是出于以下几个原因:
这通常涵盖了大多数希望直接进入自动属性所使用的后备字段的原因。 您对自动属性的使用意味着您不需要该属性的任何获取/设置逻辑,因此不需要私有后备变量。
如果您的班级中有任何复杂的逻辑,请不要使用自动属性。像往常一样去 IMO,自动属性更适合于快速实现一次性对象或临时数据封装,例如:
您不需要太多逻辑的地方。 该语法通常称为"语法糖",这意味着编译器采用该语法并将其转换为其他语法。在您的示例中,编译器将生成类似于以下内容的代码:
即使知道了所有这些,您可能可以直接访问支持字段,但是这种做法违反了使用自动属性的目的。我在这里说的可能是因为您依赖于实现细节,该细节在将来的C#编译器版本中可能随时发生变化。
从C#3.0自动属性解释 尽管可以直接使用该私人成员,但它很hacky,没有必要。 您不应该,而且几乎不需要。如果您需要访问该属性,则只需使用公共属性(例如this.Age)。支持私有财产的私有领域并没有什么特别的,优先使用私有财产是迷信。 您不能,它是语言功能,而不是IDE功能。老实说,我宁愿选择IDE来为您添加私有变量。我同意类在内部不得不使用公共入口点访问其自己的变量有点奇怪。因此,我本人并没有使用太多新功能。 |