自動實作的屬性- C# 程式設計手冊 - Microsoft Docs

文章推薦指數: 80 %
投票人數:10人

Its data can be modified from // outside the class. class Customer { // Auto-implemented properties for trivial get and set public double ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 共用 Twitter LinkedIn Facebook 電子郵件 WeChat 目錄 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 WeChat 目錄 自動實作的屬性(C#程式設計手冊) 發行項 03/23/2022 17位參與者 此頁面有所助益嗎? Yes No 還有其他意見反應嗎? 系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。

隱私權原則。

送出 謝謝。

本文內容 在C#3.0及更新版本中,當屬性存取子中不需要額外的邏輯時,自動實作的屬性可讓屬性宣告變得更精簡。

它們還可讓用戶端程式碼建立物件。

當您宣告屬性時,如下列範例所示,編譯器會建立私用、匿名的支援欄位,但只能透過屬性的get和set存取子才能存取。

在c#9和更新版本中,init存取子也可以宣告為自動執行的屬性。

範例 下列範例示範一個簡單的類別,其中包含一些自動實作的屬性: //Thisclassismutable.Itsdatacanbemodifiedfrom //outsidetheclass. classCustomer { //Auto-implementedpropertiesfortrivialgetandset publicdoubleTotalPurchases{get;set;} publicstringName{get;set;} publicintCustomerId{get;set;} //Constructor publicCustomer(doublepurchases,stringname,intid) { TotalPurchases=purchases; Name=name; CustomerId=id; } //Methods publicstringGetContactInfo(){return"ContactInfo";} publicstringGetTransactionHistory(){return"History";} //..Additionalmethods,events,etc. } classProgram { staticvoidMain() { //Intializeanewobject. Customercust1=newCustomer(4987.63,"Northwind",90108); //Modifyaproperty. cust1.TotalPurchases+=499.99; } } 您無法在介面中宣告自動實作為屬性。

自動執行的屬性會宣告私用實例支援欄位,而介面可能不會宣告實例欄位。

在介面中宣告未定義主體的屬性,會宣告具有存取子的屬性,這些存取子必須由每個實該介面的型別來執行。

在C#6及更新版本中,您可以初始化自動實作的屬性,就像欄位一樣: publicstringFirstName{get;set;}="Jane"; 先前範例中顯示的類別可變動。

用戶端程式代碼可以在建立之後變更物件中的值。

在包含顯著行為(方法)和資料的複雜類別中,通常需要有公用屬性。

不過,對於只封裝一組值的小型類別或結構(資料)而且有很少或沒有的行為,您應該使用下列其中一個選項來使物件變得不可變: 除了)的函式以外,在所有位置都只宣告存取子get(不可變。

宣告存取子和存取子(不可變的get任何地方,init但在物件結構)期間除外。

將set存取子宣告為set用(對取用者)不可變。

如需詳細資訊,請參閱如何使用自動執行的屬性來執行輕量類別。

另請參閱 屬性 修飾符 本文內容



請為這篇文章評分?