![](/img/trans.png)
[英]How to access the Private member in the same class using getter and setter property in C#
[英]C# - How do properties access a private field using getter/setter short hand
我感到很困惑,因为在业余时间我一直在阅读C#书籍以熟悉该语言。
我偶然发现了属性的使用; 在这种情况下,是针对在我的班级中的私有声明字段中使用getter / setter。
这就是我在代码中保持简单的原因:
class ClassName
{
private int hWorked = 24;
public int HoursWorked
{
get
{
return hWorked;
}
}
}
现在这本书说:
如果我使用简写版本
public int HoursWorked {get;}
-它与上面的代码相同。
但是,我需要澄清的是速记是如何能够返回 hWorked
,而不指定值hWorked = value
。
简单来说: HoursWorked
getter如何知道以我的私有声明hWorked
为目标。
很好的public int HoursWorked {get;}
创建了自己的后备字段, 但未解决 hWorked
。 问题(简写版本)中的代码等效为
class ClassName {
public int HoursWorked { get; } = 24;
}
您可以在Reflection的帮助下查看背景字段:
using System.Reflection;
...
var fields = string.Join(", ", typeof(ClassName)
.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
.Select(f => f.Name));
Console.Write(fields);
结果(可能有所不同):
<HoursWorked>k__BackingField
如果检查初始的 ClassName
实现,您将获得
hWorked
速记版本使用“隐藏”变量来存储值。
如果您编写public int hWorked {get; set;}
public int hWorked {get; set;}
它在后台从一个未命名的变量读取和写入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.