我似乎無法找到有關新[]應該是什麼的文檔。從它下面的實例似乎是一個對象數組速記這是什麼新的[]速記?
var json = new[] {
new object[] {"20-Jun-2008", 200 },
new object[] {"20-Jun-2009", 250 }
};
我似乎無法找到有關新[]應該是什麼的文檔。從它下面的實例似乎是一個對象數組速記這是什麼新的[]速記?
var json = new[] {
new object[] {"20-Jun-2008", 200 },
new object[] {"20-Jun-2009", 250 }
};
這些是隱含類型數組。
陣列創建表達式的語法(§7.5.10.2)被擴展爲支持 隱式類型陣列創建表達式: 陣列創建表達式:...
new [ ] array-initializer
在一個隱式類型的數組創建表達式中, 數組實例的類型是從數組 初始值設定項中指定的元素中推斷出來的。具體來說,由數組初始值設定項中 表達式類型組成的集合必須只包含一個到 的類型,該集合中的每個類型都可以隱式轉換,如果該類型不是null類型,則該類型的數組是創建。如果不能推斷出一個 類型,或者推斷類型爲空類型,則會發生編譯時錯誤。
以下是隱式類型數組創建 表達式的例子:
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 也不串是隱式轉換爲其它。在這種情況下,必須使用明確鍵入的 數組創建表達式,例如 指定類型爲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" } } };
的符號是一個implicitly typed array聲明。你的情況,它是一個對象數組數組。
它是匿名的,不是'object [] []'類型的變量'json'? – dillenmeister 2012-01-29 20:20:02
@dillenmeister - 公平點。確實沒有匿名類型。 – Oded 2012-01-29 20:22:41
這意味着新的[]是一個隱式類型陣列。由於它是隱式輸入的,因此在這個例子中你必須給它分配一些東西。就像你必須使用var
關鍵字一樣。
這是隱式輸入。由於該集合中的所有元素都是object
數組,因此編譯器可以推斷出該數組本身必須是object
數組的集合。
難道你不能只檢查'json'的類型,看看返回的是什麼? – 2012-01-29 20:09:39