選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP 如何 W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA 生成式 AI SCIPY AWS 網路安全 資料科學
     ❯   

C# 屬性(Get 和 Set)


屬性和封裝

在開始解釋屬性之前,您應該對“封裝”有基本的瞭解。

封裝的含義是確保“敏感”資料對使用者隱藏。為了實現這一點,您必須:

  • 將欄位/變數宣告為 private
  • 透過屬性提供 public getset 方法,以訪問和更新 private 欄位的值

屬性

您從上一章中瞭解到,private 變數只能在同一類中訪問(外部類無法訪問)。但是,有時我們需要訪問它們——這可以透過屬性來完成。

屬性就像變數和方法的組合,它有兩個方法:一個 get 方法和一個 set 方法。

示例

class Person
{
  private string name; // field

  public string Name   // property
  {
    get { return name; }   // get method
    set { name = value; }  // set method
  }
}

示例說明

Name 屬性與 name 欄位關聯。一個好的做法是為屬性和私有欄位使用相同的名稱,但屬性的首字母大寫。

get 方法返回變數 name 的值。

set 方法將 value 賦值給 name 變數。value 關鍵字表示我們賦給屬性的值。

如果您沒有完全理解,請看下面的示例。

現在我們可以使用 Name 屬性來訪問和更新 Person 類的 private 欄位

示例

class Person
{
  private string name; // field
  public string Name   // property
  {
    get { return name; }
    set { name = value; }
  }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

輸出將是:

利亞姆

自己動手試一試 »



自動屬性(簡寫)

C# 還提供了一種使用簡寫/自動屬性的方法,您無需為屬性定義欄位,只需在屬性內部編寫 get;set; 即可。

以下示例將產生與上面示例相同的結果。唯一的區別是程式碼更少

示例

使用自動屬性

class Person
{
  public string Name  // property
  { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

輸出將是:

利亞姆

自己動手試一試 »


為什麼使用封裝?

  • 更好地控制類成員(減少自己(或他人)弄亂程式碼的可能性)
  • 欄位可以設定為只讀(如果只使用 get 方法),或只寫(如果只使用 set 方法)
  • 靈活性:程式設計師可以更改程式碼的一部分,而不會影響其他部分
  • 提高了資料安全性。

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援