簡體   English   中英

C#私有變量和Java私有變量getter和setter-區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM