<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 對象和集合初始值設定項(C# 編程指南) 使用對象初始值設定項,你可以在創建對象時向對象的任何可訪問字段或屬性分配值,而無需調用后跟賦值語句行的構造函數。利用對象初始值設定項語法,你可為構造函數指定參數或忽略參數(以及括號語法)。以下示例演示如何使用具有命名類型 Cat 的對象初始值設定項以及如何調用默認構造函數。請注意,自動實現的屬性在 Cat 類中的用法。有關詳細信息,請參閱[自動實現的屬性(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/bb384054.aspx)。 ``` class Cat { // Auto-implemented properties. public int Age { get; set; } public string Name { get; set; } } ``` ``` Cat cat = new Cat { Age = 10, Name = "Fluffy" }; ``` ## 具有匿名類型的對象初始值設定項 盡管對象初始值設定項可用于任何上下文中,但它們在 LINQ?查詢表達式中特別有用。查詢表達式常使用只能通過使用對象初始值設定項進行初始化的[匿名類型](https://msdn.microsoft.com/zh-cn/library/bb397696.aspx),如下面的聲明所示。 ``` var pet = new { Age = 10, Name = "Fluffy" }; ``` 利用匿名類型,**select**?查詢表達式中的 LINQ 子句可以將原始序列的對象轉換為其值和形狀可能不同于原始序列的對象。如果你只想存儲某個序列中每個對象的部分信息,則這很有用。在下面的示例中,假定產品對象 (p) 包含很多字段和方法,而你只想創建包含產品名和單價的對象序列。 ``` var productInfos = from p in products select new { p.ProductName, p.UnitPrice }; ``` 執行此查詢時,productInfos 變量將包含一系列對象,這些對象可以在 **foreach** 語句中進行訪問,如下面的示例所示: ``` foreach(var p in productInfos){...} ``` 新的匿名類型中的每個對象都具有兩個公共屬性,這兩個屬性接收與原始對象中的屬性或字段相同的名稱。你還可在創建匿名類型時重命名字段;下面的示例將 UnitPrice 字段重命名為 Price。 ``` select new {p.ProductName, Price = p.UnitPrice}; ``` ## 具有可以為 null 的類型的對象初始值設定項 使用具有可以為 null 的結構的對象初始值設定項會導致編譯時錯誤。 ## 集合初始值設定項 集合初始值設定項允許在初始化實現 [IEnumerable](https://msdn.microsoft.com/zh-cn/library/system.collections.ienumerable.aspx) 的集合類或初始化具有 **Add** 擴展方法的類時,指定一個或多個元素初始值設定項。元素初始值設定項可以是簡單的值、表達式或對象初始值設定項。通過使用集合初始值設定項,你將無需在源代碼中指定對該類的 **Add** 方法的多個調用;編譯器將添加這些調用。 下面的示例演示了兩個簡單的集合初始值設定項: ``` List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() }; ``` 下面的集合初始值設定項使用對象初始值設定項來初始化上一個示例中定義的 Cat 類的對象。請注意,各個對象初始值設定項分別括在大括號中且用逗號隔開。 ``` List<Cat> cats = new List<Cat> { new Cat(){ Name = "Sylvester", Age=8 }, new Cat(){ Name = "Whiskers", Age=2 }, new Cat(){ Name = "Sasha", Age=14 } }; ``` 如果集合的 [null](https://msdn.microsoft.com/zh-cn/library/edakx9da.aspx) 方法允許,則可以將 **Add** 指定為集合初始值設定項中的一個元素。 ``` List<Cat> moreCats = new List<Cat> { new Cat(){ Name = "Furrytail", Age=5 }, new Cat(){ Name = "Peaches", Age=4 }, null }; ``` 如果集合支持索引,可以指定索引元素。 ``` var numbers = new Dictionary<int, string> { [7] = "seven", [9] = "nine", [13] = "thirteen" }; ``` ``` // The following code consolidates examples from the topic. class ObjInitializers { class Cat { // Auto-implemented properties. public int Age { get; set; } public string Name { get; set; } } static void Main() { Cat cat = new Cat { Age = 10, Name = "Fluffy" }; List<Cat> cats = new List<Cat> { new Cat(){ Name = "Sylvester", Age=8 }, new Cat(){ Name = "Whiskers", Age=2 }, new Cat(){ Name = "Sasha", Age=14 } }; List<Cat> moreCats = new List<Cat> { new Cat(){ Name = "Furrytail", Age=5 }, new Cat(){ Name = "Peaches", Age=4 }, null }; // Display results. System.Console.WriteLine(cat.Name); foreach (Cat c in cats) System.Console.WriteLine(c.Name); foreach (Cat c in moreCats) if (c != null) System.Console.WriteLine(c.Name); else System.Console.WriteLine("List element has null value."); } // Output: //Fluffy //Sylvester //Whiskers //Sasha //Furrytail //Peaches //List element has null value. } ``` ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [LINQ 查詢表達式(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/bb397676.aspx) [匿名類型(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/bb397696.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看