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

概述C#編譯器

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

在寫一些實體類的時候,我們往往在寫構造方法的時候思考很長時間,除了一個無參構造器外還在想需要寫幾個構造器呢?哪些參數是需要初始化的。現在你再也不需要為這事煩惱了。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"}; 

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

  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;  

這一串的構造方法都是為了應付不同的初始化情況。好了,來看看對象初始化器編譯器在后面為我們做了些什么呢?使用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,調用Book的默認無參構造方法初始化它,然后對它的屬性進行賦值,最后將這個局部變量賦值給book。看到這里,我們應該想到,要使用對象初始化器,那么這個對象必須有一個無參構造方法,如果你給這個方法寫了一個有參構造方法而將它的默認無參構造方法覆蓋了并且沒有提供一個新的無參構造方法,那么使用對象初始化器編譯的時候是不會通過的(不過想不通,為啥C#編譯器生成這么一個奇怪的局部變量名字,還有為啥不直接使用book呢)。像下面的代碼不更好:

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

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

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

【編輯推薦】

  1. 簡單介紹C#預處理
  2. 學習C#無詞尾符號經驗談
  3. C#調用QuickTest自動化
  4. 詳解C#正規表達式
  5. C#字符串插入html標簽
責任編輯:佚名 來源: 博客園
相關推薦

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#命令行編譯器

2010-01-18 10:28:15

C++編譯器

2013-12-10 10:53:47

shellcode

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++編譯器

2011-10-20 09:50:14

C#
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级片中文字幕 | 99久久国产免费 | 成人av网站在线观看 | 久久99精品视频 | 久久久性色精品国产免费观看 | www.久久| 国产成人免费一区二区60岁 | 日韩精品在线观看一区二区 | 国产黄色精品在线观看 | 在线免费观看a级片 | 国产成人精品a视频 | 日韩精品一区二区三区视频播放 | 中文字幕欧美在线观看 | 日本免费一区二区三区 | 中文在线一区二区 | 亚洲3p| 欧美精品在线一区 | 久久国 | 成年人网站国产 | 久久久久久亚洲精品不卡 | av在线播放网址 | 91在线免费视频 | 亚洲一区二区免费视频 | 久久精品一区二区三区四区 | 国产美女精品 | 亚洲一区中文字幕在线观看 | 91av视频在线观看 | 国产欧美精品区一区二区三区 | 天天综合久久 | 日日夜夜精品视频 | 97在线观视频免费观看 | 精品一区二区免费视频 | 欧美美女爱爱 | 91精品国产91久久久久久密臀 | 亚洲精品一区二三区不卡 | 真人一级毛片 | 国产欧美在线播放 | 97精品国产| 天天干天天干 | www.国产一区 | 中文字幕11页 |