程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0語言新特性(語言規范):6 具有隱式類型的數組

C# 3.0語言新特性(語言規范):6 具有隱式類型的數組

編輯:關於C語言

原文:《C# Version 3.0 Specification》,Microsoft
翻譯:lover_P
數組創建表達式的語法被擴展為支持具有隱式類型的數組創建表達式:

array-creation-expression:
...
new  [  ]  array-initializer

在一個具有隱式類型的數組創建表達式中,數組實例的類型通過數組初始化器中指定的元素來推斷。特別地,數組初始化器中的表達式類型形成的集合中,必須恰好有一個類型使得其他類型都可以隱式地轉換為該類型,並且該類型不是空類型,則創建一個具有該類型的數組。如果無法推斷出恰好一個這樣的類型,或者推斷出來的類型是空類型,會發生一個編譯期錯誤。

下面是具有隱式類型的數組創建表達式的一些例子:

var a = new[] { 1, 10, 100, 1000 };          // int[]

var b = new[] { 1, 1.5, 2, 2.5 };            // double[]

var c = new[] { "hello", null, "world" };  // string[]

var d = new[] { 1, "one", 2, "two" };       // Error

最後一個表達式會產生一個編譯期錯誤,因為int和string都不能隱式地轉換為另一個。這時就必須使用一個具有顯式類型的數組創建表達式,例如指定其類型為object[]。另一種可選方法是,某個元素可以被轉換為一個通用基本類型,這個類型就將成為推導出的類型。

具有隱式類型的數組創建表達式可以與匿名對象初始化器合並,來創建匿名類型數據結構。例如:

var contacts = new[] {

    new {

        Name = "Chris Smith",

        PhoneNumbers = new[] { "206-555-0101", "425-882-8080" }

    },

    new {

        Name = "Bob Harris",

        PhoneNumbers = new[] { "650-555-0199" }

    }

};

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved