溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何理解C#對象集合初始化器

發(fā)布時(shí)間:2021-06-16 14:01:35 來源:億速云 閱讀:131 作者:chen 欄目:編程語言

這篇文章主要講解了“如何理解C#對象集合初始化器”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何理解C#對象集合初始化器”吧!

C#語言還是比較常見的東西,這里我們主要介紹C#對象集合初始化器,包括介紹編譯器自動(dòng)的調(diào)用了List的無參構(gòu)造方法等方面。

在寫一些實(shí)體類的時(shí)候,我們往往在寫構(gòu)造方法的時(shí)候思考很長時(shí)間,除了一個(gè)無參構(gòu)造器外還在想需要寫幾個(gè)構(gòu)造器呢?哪些參數(shù)是需要初始化的?,F(xiàn)在你再也不需要為這事煩惱了。C# 3.0為你提供了C#對象集合初始化器:

public class Book  {  ///   /// 圖書名稱  ///   public string Title { get; set; }  ///   /// 單價(jià)  ///   public float Price { get; set; }  ///   /// 作者  ///   public string Author { get; set; }  ///   /// ISBN號  ///   public string ISBN { get; set; }  }  //對象初始化器  Book book = new Book { Title="Inside COM",ISBN="123-456-789"};

現(xiàn)在你想初始化幾個(gè)就初始化幾個(gè),不需要出現(xiàn)這種情況:

public Book():this("")  {   }  public Book(string title):this(title,0)  {  }  public Book(string title, float price):this(title,price,"")  {   }  public Book(string title, float price, string isbn)  {  this.Title = title;  this.Price = price;  this.ISBN = isbn;  }
List<Book> <>g__initLocal0 = new List<Book>();  Book <>g__initLocal1 = new Book();  <>g__initLocal1.Title = "Inside COM";  <>g__initLocal1.ISBN = "123-456-789";  <>g__initLocal1.Price = 20f;  <>g__initLocal0.Add(<>g__initLocal1);  Book <>g__initLocal2 = new Book();  <>g__initLocal2.Title = "Inside C#";  <>g__initLocal2.ISBN = "123-356-d89";  <>g__initLocal2.Price = 100f;  <>g__initLocal0.Add(<>g__initLocal2);  Book <>g__initLocal3 = new Book();  <>g__initLocal3.Title = "Linq";  <>g__initLocal3.ISBN = "123-d56-d89";  <>g__initLocal3.Price = 120f;  <>g__initLocal0.Add(<>g__initLocal3);

從上面的代碼來看,編譯器自動(dòng)的調(diào)用了List的無參構(gòu)造方法,然后實(shí)例化一個(gè)個(gè)的Book,再一個(gè)個(gè)的Add進(jìn)去,和我們原來的做法沒有什么不同,但是,這是編譯器為我們做的,所以簡省了我們很多的編碼工作。

C#對象集合初始化器就算介紹完了。有人也許會說,不就是個(gè)syntx sugar么,有什么。是的,確實(shí)是個(gè)語法糖。在編譯器發(fā)展早期,編譯器科學(xué)家門一直在想方設(shè)法的優(yōu)化編譯器生成的代碼,這個(gè)時(shí)候,編譯器做的主要是對機(jī)器優(yōu)化,因?yàn)槟莻€(gè)時(shí)候機(jī)器的時(shí)間非常寶貴,機(jī)器運(yùn)算速度也不快,今天我們有了足夠好的機(jī)器了(但并不是說我們可以不關(guān)注性能的編寫程序),而且作為編寫軟件的人來說,比機(jī)器的時(shí)間寶貴得多,所以今天的編譯器也在向人優(yōu)化了,從編程語言的發(fā)展之路來講,今天的編程語言比昨天的語言更高級,也更人性化了,我們只要編寫更少的代碼,更符合人的思維的代碼,而只要關(guān)注我們值的關(guān)注的地方。體力活兒就交給編譯器吧。

感謝各位的閱讀,以上就是“如何理解C#對象集合初始化器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何理解C#對象集合初始化器這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI