成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述C#編譯器

開發(fā) 后端
本文介紹C#編譯器自動的調(diào)用了List的無參構(gòu)造方法,然后實例化一個個的Book,再一個個的Add進去,簡省了我們很多的編碼工作。

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

  1. publicclassBook  
  2. {  
  3. ///  
  4. ///圖書名稱  
  5. ///  
  6. publicstringTitle{get;set;}  
  7. ///  
  8. ///單價  
  9. ///  
  10. publicfloatPrice{get;set;}  
  11. ///  
  12. ///作者  
  13. ///  
  14. publicstringAuthor{get;set;}  
  15. ///  
  16. ///ISBN號  
  17. ///  
  18. publicstringISBN{get;set;}  
  19. }  
  20. //對象初始化器  
  21. Bookbook=newBook{Title="InsideCOM",ISBN="123-456-789"}; 

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

  1. public Book():this("")  
  2. {  
  3. }  
  4. public Book(string title):this(title,0)  
  5. {  
  6. }  
  7. public Book(string title, float price):this(title,price,"")  
  8. {  
  9. }  
  10. public Book(string title, float price, string isbn)  
  11. {  
  12. this.Title = title;  
  13. this.Price = price;  
  14. this.ISBN = isbn;  

這一串的構(gòu)造方法都是為了應(yīng)付不同的初始化情況。好了,來看看對象初始化器編譯器在后面為我們做了些什么呢?使用Reflector反編譯程序集:

  1. Book<>g__initLocal0=newBook();  
  2. <>g__initLocal0.Title="InsideCOM";  
  3. <>g__initLocal0.ISBN="123-456-789";  
  4. Bookbook=<>g__initLocal0; 

C#編譯器生成了一個新的局部變量g__initLocal0,調(diào)用Book的默認(rèn)無參構(gòu)造方法初始化它,然后對它的屬性進行賦值,最后將這個局部變量賦值給book。看到這里,我們應(yīng)該想到,要使用對象初始化器,那么這個對象必須有一個無參構(gòu)造方法,如果你給這個方法寫了一個有參構(gòu)造方法而將它的默認(rèn)無參構(gòu)造方法覆蓋了并且沒有提供一個新的無參構(gòu)造方法,那么使用對象初始化器編譯的時候是不會通過的(不過想不通,為啥C#編譯器生成這么一個奇怪的局部變量名字,還有為啥不直接使用book呢)。像下面的代碼不更好:

  1. Bookbook=newBook();  
  2. book.Title="InsideCOM";  
  3. book.ISBN="123-456-789"

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

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

【編輯推薦】

  1. 簡單介紹C#預(yù)處理
  2. 學(xué)習(xí)C#無詞尾符號經(jīng)驗談
  3. C#調(diào)用QuickTest自動化
  4. 詳解C#正規(guī)表達式
  5. C#字符串插入html標(biāo)簽
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-06 14:59:36

C#編譯器

2009-08-14 11:34:26

Mono C#編譯器

2009-09-01 10:35:19

C# 3.0編譯器

2009-08-14 16:37:02

C# NGWS run

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2009-08-18 11:27:56

配置C#命令行編譯器

2013-12-10 10:53:47

shellcode

2010-01-18 10:28:15

C++編譯器

2010-10-20 13:43:37

C++編譯器

2009-08-20 17:35:00

配置C#命令行編譯器

2010-01-12 16:42:59

C++編譯器

2010-01-14 15:29:44

C++編譯器

2010-02-03 13:14:03

C++編譯器命令

2010-06-04 17:37:45

Linux編程工具

2012-06-06 09:04:54

Roslyn

2011-10-20 15:06:47

Project Ros

2010-01-21 09:26:53

CC++編譯器

2010-01-27 16:39:48

C++編譯器

2010-01-14 14:55:14

C++編譯器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 九一精品| 福利电影在线 | 久久久久久久网 | 懂色av蜜桃av | 欧美成人精品欧美一级 | 午夜影院在线免费观看视频 | 日韩在线免费电影 | 成人性生交大片 | 久久国产视频一区 | 日韩精品一区二区三区视频播放 | 国产美女福利在线观看 | 第四色狠狠 | 成人妇女免费播放久久久 | 99久久精品国产麻豆演员表 | 国产精品美女在线观看 | 国产亚洲精品久久19p | 黑人巨大精品欧美黑白配亚洲 | 国产精品久久久久久久久久免费看 | 午夜精品一区二区三区在线观看 | 久久高清| 精品欧美一区免费观看α√ | 久久久国产精品 | 日本午夜在线视频 | 亚洲一区不卡在线 | 欧美激情一区二区三区 | 一区二区三区免费观看 | 欧美成人一区二区三区 | а_天堂中文最新版地址 | 亚洲精品视频一区 | 亚洲成年人免费网站 | 九九在线视频 | 午夜精品久久 | wwwxxx国产 | 国产在线小视频 | 中文字字幕一区二区三区四区五区 | 91久久精品一区二区二区 | 在线播放国产一区二区三区 | 欧美国产精品 | 亚洲天堂精品久久 | 午夜精品网站 | 国产综合在线视频 |