[英]Anonymous Types in C#
// x is compiled as an int
var x = 10;
// y is compiled as a string
var y = "Hello";
// z is compiled as int[]
var z = new[] { 0, 1, 2 };
但
// ano is compiled as an anonymous type
var ano = new { x1 = 10, y1 = "Hello" };
創建的ano
對象的屬性為只讀。 我想弄清楚為什么這些屬性是只讀的。 建議被贊賞嗎?
編輯:
var ano1 = new { x1 = 10, y1 = "Hello" };
var ano2 = new { x1 = 10, y1 = "Hello" };
如果新的匿名類型具有相同數量和相同順序的屬性類型,那么它的內部類型將與第一個相同嗎?
var
並不表示“使用匿名類型”,而是表示“編譯器,請幫我找出類型!”。 在前三種情況下,該類型實際上是“命名”類型System.Int32
, System.String
和System.Int32[]
(在最后一種情況下,數組的元素類型也由編譯器從的類型推導得出。您放入初始化程序中的數組元素)。
最后一種情況是唯一使用匿名類型的情況。 根據設計,C#的匿名類型是不可變的 。 首先使用LINQ語言添加它們的主要情況是LINQ的引入,它在產生匿名類型的情況下不需要可變性。 通常,不可變類傾向於給設計者較少的問題,尤其是在涉及並發時,因此語言的設計者決定使用不可變的匿名類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.