[英]C# private variable & java private variable getter & setter - Difference?
我試圖了解使用getters&setters和java聲明的C#自動聲明變量之間的區別。
在Java中,我通常這樣做:
private int test;
public int getTest() {
return test;
}
public void setTest(int test) {
this.test = test;
}
但是在C#中,我嘗試了如下操作:
private int test { public get; public set};
但這根本不允許訪問該變量。 所以我最終得到了這個:
public int test { get; set; }
這樣一來,我可以從類外部訪問變量測試。
我的問題是,兩者之間有什么區別? C#實現將變量公開是一個壞主意嗎?
在C#中,我已將該變量聲明為“ public”。 而在Java中,它被聲明為“私有”。 這會產生影響嗎?
找到一個很好的答案(除了低於) 這里
完全一樣。
無論如何,您在C#中定義的自動屬性將編譯為getter和setter方法。 它們被分類為“語法糖”。
這個:
public int Test { get; set; }
..編譯為此:
private int <>k____BackingFieldWithRandomName;
public int get_Test() {
return <>k____BackingFieldWithRandomName;
}
public void set_Test(int value) {
<>k____BackingFieldWithRandomName = value;
}
在第一個示例中,您有一個支持字段。
在C#
您可以執行以下操作:
private int test { get; set; };
或公開property
(完全有效)
public int test { get; set; };
您還可以在C#
具有支持字段,這些字段在以該語言引入Properties之前更為常見。
例如:
private int _number = 0;
public int test
{
get { return _number; }
set { _number = value; }
}
在上面的示例中, test
是訪問private
field
的公共Property
。
這是C#編譯器提供的解決方案,可輕松創建getter和setter方法。
private int test;
public int Test{
public get{
return this.test;
}
public set{
this.test = value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.