![](/img/trans.png)
[英]How to instantiate unique delegates using an anonymous method in a loop (in C#)?
[英]using {…} with new to instantiate anonymous type in C#
我最近正在Smarterer進行C#的技能測試。
我遇到一個問題,該問題表明可以使用以下哪項在C#中創建匿名類型(類似)。
我選擇了“這些都不選”(我不記得其他選擇了,因為基於時間的測試只有10秒)。
一旦給出答案,它就會說{...}
是正確的答案。
所以我猜是這樣的:
var someVariableName = new {...};
創建一個匿名類型。
我很驚訝地看到了這一點,並對其進行了調整,但未能找到與此類似的東西。
問:在使用{...}
關鍵字或運算符實例化時,有什么方法可以創建匿名類型而不聲明其類型? 還是問題的正確答案不正確?
如果我沒看錯,可以使用dynamic
關鍵字來完成。
http://msdn.microsoft.com/zh-CN/library/bb397696.aspx是MS文檔,引用:
您可以通過將new運算符與對象初始化程序一起使用來創建匿名類型。 有關對象初始化程序的更多信息,請參見對象和集合初始化程序(C#編程指南)。 下面的示例顯示了一個匿名類型,該類型使用名為Amount和Message的兩個屬性進行了初始化。
C#
var v = new { Amount = 108, Message = "Hello" };
這不是動態類型,而是“匿名”的特定靜態類型,即您沒有給它命名。 但是,編譯器已經/將要使用,因此v仍然是強類型的,您將獲得智能感知,並且v.FieldIDontHave將給出編譯器錯誤。
使用關鍵字var
var x = new {value = 3, name = "lol"};
Console.WriteLine(x.value); //prints 3
Console.WriteLine(x.name); //prints lol
在評論中花了點時間之后,我可以確認一些細節。
Smarterer的“答案”指出,僅{ MyProperty = 2 }
是匿名類型的有效語法,只有一半正確。 語法是必需的,但需要與new
關鍵字結合使用。
var anon = new { Name = "Adam", Age = 29 };
在VS 2012中嘗試以下操作將無法編譯:
// Try and make an anonymous type without new.
var anon = { Name = "Adam", Age = 29 };
// Try and declare an anonymous type prior to "newing" one up.
{ Name = "Adam", Age = 29 };
同樣,沒有其他站點的確切問題和可用答案,很難在該站點上提供問題和后續答案的上下文。 希望這足以關閉它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.