亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

舉例講解C#中自動實現的屬性

2020-01-24 01:18:30
字體:
來源:轉載
供稿:網友

在 C# 3.0 及更高版本,當屬性訪問器中不需要任何其他邏輯時,自動實現的屬性會使屬性聲明更加簡潔。它們還允許客戶端代碼創建對象。當你聲明以下示例中所示的屬性時,編譯器將創建僅可以通過該屬性的 get 和 set 訪問器訪問的專用、匿名支持字段。
下列示例演示一個簡單的類,它具有某些自動實現的屬性:

// This class is mutable. Its data can be modified from// outside the class.class Customer{  // Auto-Impl Properties for trivial get and set  public double TotalPurchases { get; set; }  public string Name { get; set; }  public int CustomerID { get; set; }  // Constructor  public Customer(double purchases, string name, int ID)  {    TotalPurchases = purchases;    Name = name;    CustomerID = ID;  }  // Methods  public string GetContactInfo() {return "ContactInfo";}  public string GetTransactionHistory() {return "History";}  // .. Additional methods, events, etc.}class Program{  static void Main()  {    // Intialize a new object.    Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );    //Modify a property    cust1.TotalPurchases += 499.99;  }}

在 C# 6 和更高版本中,你可以像字段一樣初始化自動實現屬性:

public string FirstName { get; set; } = "Jane";

上一示例中所示的類是可變的。創建客戶端代碼后可以用于更改對象中的值。在包含重要行為(方法)以及數據的復雜類中,通常有必要具有公共屬性。但是,對于較小類或僅封裝一組值(數據)且只有很少行為或沒有行為的結構,則應該通過聲明 set 訪問器為 專用(對使用者的不可變)或通過聲明僅一個 get 訪問器 (除構造函數外都不可變),使對象不可變。
動實現的屬性上允許使用特性,但很明顯支持字段上不允許,因為不能從你的源代碼訪問它們。如果必須使用屬性的支持字段上的特性,只需創建一個常規屬性。

使用自動實現的屬性實現輕量類
本示例演示如何創建一個僅用于封裝一組自動實現的屬性的不可變輕型類。 當你必須使用引用類型語義時,請使用此種構造而不是結構。
可通過兩種方法來實現不可變的屬性。 可以將 set 取值函數聲明為 private。 屬性只能在該類型中設置,但它對于使用者是不可變的。 也可以僅聲明 get 取值函數,使屬性除了能在該類型的構造函數中設置,在其他任何位置都不可變。
當你聲明一個 private set 取值函數時,你無法使用對象初始值設定項來初始化屬性。 你必須使用構造函數或工廠方法。
示例
下面的示例演示了實現具有自動實現屬性的不可變類的兩種方法。 這兩種方法均使用 private set 聲明其中一個屬性,使用單獨的 get 聲明另一個屬性。 第一個類僅使用構造函數來初始化屬性,第二個類則使用可調用構造函數的靜態工廠方法。

// This class is immutable. After an object is created,   // it cannot be modified from outside the class. It uses a   // constructor to initialize its properties.   class Contact  {    // Read-only properties.     public string Name { get; }    public string Address { get; private set; }    // Public constructor.     public Contact(string contactName, string contactAddress)    {      Name = contactName;      Address = contactAddress;            }  }  // This class is immutable. After an object is created,   // it cannot be modified from outside the class. It uses a   // static method and private constructor to initialize its properties.    public class Contact2  {    // Read-only properties.     public string Name { get; private set; }    public string Address { get; }    // Private constructor.     private Contact2(string contactName, string contactAddress)    {      Name = contactName;      Address = contactAddress;            }    // Public factory method.     public static Contact2 CreateContact(string name, string address)    {      return new Contact2(name, address);    }  }  public class Program  {     static void Main()    {      // Some simple data sources.       string[] names = {"Terry Adams","Fadi Fakhouri", "Hanying Feng",                "Cesar Garcia", "Debra Garcia"};      string[] addresses = {"123 Main St.", "345 Cypress Ave.", "678 1st Ave",                 "12 108th St.", "89 E. 42nd St."};      // Simple query to demonstrate object creation in select clause.       // Create Contact objects by using a constructor.       var query1 = from i in Enumerable.Range(0, 5)            select new Contact(names[i], addresses[i]);      // List elements cannot be modified by client code.       var list = query1.ToList();      foreach (var contact in list)      {        Console.WriteLine("{0}, {1}", contact.Name, contact.Address);      }      // Create Contact2 objects by using a static factory method.       var query2 = from i in Enumerable.Range(0, 5)             select Contact2.CreateContact(names[i], addresses[i]);      // Console output is identical to query1.       var list2 = query2.ToList();      // List elements cannot be modified by client code.       // CS0272:       // list2[0].Name = "Eugene Zabokritski";       // Keep the console open in debug mode.      Console.WriteLine("Press any key to exit.");      Console.ReadKey();            }  }

輸出:

  Terry Adams, 123 Main St.  Fadi Fakhouri, 345 Cypress Ave.  Hanying Feng, 678 1st Ave  Cesar Garcia, 12 108th St.  Debra Garcia, 89 E. 42nd St.

編譯器為每個自動實現的屬性創建了支持字段。 這些字段無法直接從源代碼進行訪問。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产品国语在线| 久久久久久12| 精品成人在线视频| 美女久久久久久久| 成人免费在线网址| 国内精品久久久久久| 亚洲精品一区二区三区不| 欧美日产国产成人免费图片| 午夜精品福利视频| 91精品国产91久久久久久不卡| 久久69精品久久久久久国产越南| 久久久免费高清电视剧观看| 海角国产乱辈乱精品视频| 欧美精品久久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 国产女人18毛片水18精品| 精品人伦一区二区三区蜜桃免费| 日韩电影中文字幕在线| 成人做爰www免费看视频网站| 97久久精品视频| 亚洲午夜精品久久久久久久久久久久| 成人黄色免费网站在线观看| 亚洲奶大毛多的老太婆| 亚洲一二在线观看| 欧美又大又粗又长| 国产成人91久久精品| 最新国产精品亚洲| 在线播放亚洲激情| 北条麻妃99精品青青久久| 亚洲奶大毛多的老太婆| 一区二区三区www| 国产精品久久久久久久久久ktv| 国产精品视频男人的天堂| 欧美激情亚洲一区| 久久久国产一区二区三区| 精品国产乱码久久久久久天美| 日韩激情av在线播放| 精品无人区乱码1区2区3区在线| 欧美—级高清免费播放| 欧美精品一区二区免费| 日韩视频免费在线| 日本精品va在线观看| 国产一区二区黑人欧美xxxx| 国产91亚洲精品| xvideos国产精品| 日韩免费视频在线观看| 欧美在线观看日本一区| 日韩精品极品毛片系列视频| 国产精品高潮呻吟久久av无限| 欧美第一页在线| 中文字幕精品久久久久| 久久国产精品亚洲| 久久中国妇女中文字幕| 日韩国产欧美精品在线| 日韩av在线网址| 蜜臀久久99精品久久久久久宅男| 国产大片精品免费永久看nba| 国产精品一区av| 日本久久久a级免费| 欧美午夜精品久久久久久人妖| 日韩一区二区欧美| 久久国内精品一国内精品| 色yeye香蕉凹凸一区二区av| 亚洲欧美中文日韩在线v日本| 亚洲日韩中文字幕| 亚洲成人动漫在线播放| 色噜噜久久综合伊人一本| 国产精品吹潮在线观看| 国产视频精品自拍| 日韩影视在线观看| 精品久久久久久中文字幕大豆网| 亚洲成av人片在线观看香蕉| 日韩av影视综合网| 欧美做受高潮电影o| 中文字幕日韩欧美在线| 91a在线视频| 国a精品视频大全| 伊人亚洲福利一区二区三区| 色综合色综合久久综合频道88| 亚洲国产美女精品久久久久∴| 国产精品亚洲激情| 亚洲欧美综合图区| 91久久国产精品91久久性色| 国产精品美女主播在线观看纯欲| 亚洲激情小视频| 中文一区二区视频| 久久国产精品免费视频| 国产精品扒开腿做爽爽爽的视频| 国产成人高清激情视频在线观看| 久久亚洲春色中文字幕| 国产成人涩涩涩视频在线观看| 国语自产精品视频在线看| 日韩久久免费电影| 日韩网站在线观看| 国产97在线播放| 色久欧美在线视频观看| 欧美激情国内偷拍| 久久久久久久久网站| 亚洲国产精品大全| 成人中文字幕在线观看| 亚洲视频精品在线| 久久九九亚洲综合| 日韩亚洲成人av在线| 亚洲美女动态图120秒| 狠狠躁夜夜躁人人爽超碰91| 狠狠色香婷婷久久亚洲精品| 久久不射热爱视频精品| 九九热精品视频国产| 精品国产视频在线| 精品久久香蕉国产线看观看亚洲| 91av视频在线观看| 怡红院精品视频| 国产一区二区三区视频在线观看| 精品久久在线播放| 色妞色视频一区二区三区四区| 欧美视频中文在线看| 国产日韩综合一区二区性色av| 亲爱的老师9免费观看全集电视剧| 成人免费直播live| 国产精品久久久久久久久久三级| 久久视频免费在线播放| 国产精品999| 97高清免费视频| 国产精品一区二区av影院萌芽| 亚洲aⅴ日韩av电影在线观看| 国产一区二区黑人欧美xxxx| 91色在线观看| 久久偷看各类女兵18女厕嘘嘘| 亚洲激情中文字幕| 欧美日韩国产综合新一区| 中文字幕精品久久久久| 久久久久久国产精品三级玉女聊斋| 欧美精品手机在线| 91高清免费视频| 欧美一区二区三区免费视| 成人精品在线视频| 日本一欧美一欧美一亚洲视频| 成人有码在线视频| 日韩国产欧美区| 97视频在线看| 久久影院中文字幕| 国产精品9999| 秋霞成人午夜鲁丝一区二区三区| 亚洲国模精品私拍| 国产精品免费在线免费| 91po在线观看91精品国产性色| 国产精品爽爽爽爽爽爽在线观看| 91精品国产99久久久久久| 亚洲欧美激情一区| 91久久精品视频| 亚洲国产精品字幕| 国产性色av一区二区| 欧美亚洲国产视频| 日韩禁在线播放| 亚洲欧美日韩高清| 国产精品视频在线播放| 91精品国产综合久久久久久蜜臀| 欧美日韩中文字幕综合视频| 精品国产91久久久| 亚洲国模精品私拍| 在线激情影院一区| 欧美丰满少妇xxxxx做受| 欧美大片网站在线观看| 最近2019中文字幕mv免费看|