![](/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.