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

C#3.0中對象初始化器和集合初始化器

開發 后端
本文主要介紹了關于C#中的對象初始化器和集合初始化器的一些常見的問題,希望對大家有幫助,一起來看。

C# 3.0 中對象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers) ,就是簡化我們的代碼,讓本來幾行才能寫完的代碼一行寫完。這樣在LINQ的使用中,我們才不會把一個LINQ表達式寫的巨復雜無比。

由于我看到幾篇講對象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一個簡單的例子,一些稍稍特殊一點的場景的初始化賦值并沒有涉及,所以我特整理這篇博客。

關于對象初始化器(Object Initializers) 的一些問題:

問題一: 對象初始化器允許只給部分值賦值么?即不給其中一些值賦值

答案:允許;參考后面的代碼。

問題二:對象初始化器允許給internal 的成員賦值?(私有成員肯定不用想了,肯定不能賦值。)

答案:允許;參考下面的代碼。

 

  1. public class Person  
  2. {  
  3. public string FirstName { getset; }  
  4. public string LastName { getset; }  
  5. public int Age { getset; }  
  6. private int test01 = 25;  
  7. internal int test02;  
  8. }  
  9. class Program  
  10. {  
  11. static void Main(string[] args)  
  12. {  
  13. Person person = new Person { FirstName = "Scott", LastName = "Guthrie", test02 = 56, };  
  14. Console.WriteLine(person.test02);  
  15. Console.WriteLine(person.Age);  
  16. Console.ReadLine();  
  17. }  

 

問題三:對象初始化器是否可以結合構造函數一起使用?

答案:可以參看如下代碼就可以正常使用:

var cookie3 = new System.Net.Cookie("MyCookie", "Jose") { Comment = "a cookie" };

我們在構造函數中給 Cookie 的名字和值賦了值,在初始化構造器中給 Comment 屬性賦了值。

問題四:構造函數賦值和初始化構造器賦值那個***被執行?

比如下述代碼,結果是那個呢??

 

  1. static void Main(string[] args)  
  2. {  
  3. var cookie = new System.Net.Cookie("MyCookie""Jose") { Name = "test02", Comment = "a cookie" };  
  4. Console.WriteLine(cookie.Name);  
  5. Console.ReadLine();  

 

答案:

構造函數比初始化構造器更早被執行。

上述WriteLine 寫出來的信息為:test02

集合初始化器(Collection Initializers) 的一些問題:

問題一:集合初始化構造器中是否可以構造集合的一項為空值?

答案:可以,參看下述代碼。

問題二:集合初始化構造器是否可以初始化Hashtable ?

答案:可以。這時候相當于用了兩個對象初始化構造器,參看下面代碼:

 

  1. public class Person  
  2. {  
  3. public string FirstName { getset; }  
  4. public string LastName { getset; }  
  5. public int Age { getset; }  
  6. private int test01 = 25;  
  7. internal int test02;  
  8. }  
  9. class Program  
  10. {  
  11. static void Main(string[] args)  
  12. {  
  13. List<Person> people = new List<Person>{  
  14. new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },  
  15. new Person { FirstName = "Bill", LastName = "Gates", test02 = 85},  
  16. new Person { FirstName = "Susanne", Age = 32 },  
  17. null,  
  18. };  
  19. Hashtable pp = new Hashtable {   
  20. { 1, new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } },  
  21. { 2, new Person { FirstName = "Bill", LastName = "Gates", test02 = 85} },  
  22. { 3, new Person { FirstName = "Susanne", Age = 32 } },  
  23. { 4, null },  
  24. };  
  25. Console.ReadLine();  
  26. }  

 

通過這些常見的問題,希望對你有幫助。

【編輯推薦】

  1. C#初學者對Equals方法的幾個常見誤解
  2. 淺析C#插件式程序開發經驗
  3. 詳細介紹C#數據類型
  4. C#值類型賦值與引用類型的賦值
  5. c#.net實體類序列化方法
責任編輯:于鐵 來源: 博客園
相關推薦

2009-04-23 17:56:05

C#自動屬性對象初始化

2009-08-26 15:28:52

C#對象集合初始化器

2009-08-27 10:31:39

C#對象初始化器

2009-08-24 18:01:45

C#3.0新特性

2009-07-31 17:51:27

C#對象初始化

2023-11-12 23:08:17

C++初始化

2019-11-04 13:50:36

Java數組編程語言

2009-12-16 14:04:04

Ruby對象初始化

2010-02-06 15:58:10

C++集合初始化

2009-09-18 11:15:52

C#數組初始化

2012-02-28 10:04:09

Java

2010-02-06 14:40:50

C++初始化和賦值

2012-05-23 12:46:53

JavaJava類

2023-12-18 09:26:12

C++switchif

2023-10-06 20:57:52

C++聚合成員

2009-09-17 16:06:22

C#數組初始化

2009-09-02 16:52:55

C#數組初始化

2009-08-26 18:28:44

C#數組

2011-06-09 14:13:06

C++JAVA缺省初始化

2024-03-13 08:52:43

C++初始化方式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区三区 | 日韩精彩视频 | 亚洲视频区 | 婷婷精品 | 日韩靠逼| av片免费| 超碰免费在线观看 | 免费九九视频 | 91精品一区二区三区久久久久久 | 国产亚洲精品久久久久动 | 免费播放一级片 | 免费视频成人国产精品网站 | 成人av网站在线观看 | 久久99久久久久 | 成人精品一区二区 | 不用播放器看的av | 欧美日韩专区 | 午夜三级网站 | 国产成人免费在线 | 久久精品a级毛片 | 狠狠干狠狠操 | 久久久久亚洲av毛片大全 | 欧美日韩国产精品激情在线播放 | 视频在线观看亚洲 | 一区二区免费看 | 黄视频国产 | h在线免费观看 | 亚洲精品久久久久久一区二区 | 中文字幕第十页 | 日韩伦理一区二区三区 | 一区二区三区不卡视频 | 色综合中文 | 99久久精品一区二区成人 | 免费激情av | 久久精品亚洲成在人线av网址 | 国产欧美日韩在线播放 | 波多野结衣电影一区 | 欧美激情亚洲激情 | 男女视频在线免费观看 | 青青草在线播放 | 欧美午夜影院 |