我最近在Smarterer尝试了C#的技能测试。
我遇到了一个问题,其中说明了以下哪些内容可用于在C#中创建匿名类型(类似)。
我选择了#34;其中没有一个" (我不记得其他选项,因为基于时间的测试只有10秒)。
我回答后说{...}
是正确答案。
所以我想这样的事情:
var someVariableName = new {...};
创建一个匿名类型。
我很惊讶地看到这一点并且有点笨拙,但却找不到类似的东西。
问题:在使用{...}
关键字或运算符进行实例化时,是否可以创建匿名类型而不声明其类型?或问题的正确答案不是"正确"?
如果我没有错,可以使用dynamic
关键字来完成。
答案 0 :(得分:5)
http://msdn.microsoft.com/en-GB/library/bb397696.aspx是MS文档,引用:
您可以通过将new运算符与a一起使用来创建匿名类型 对象初始化器。有关对象初始值设定项的更多信息, 请参阅对象和集合初始化程序(C#编程指南)。该 以下示例显示了使用两个初始化的匿名类型 名为Amount和Message的属性。
C#
var v = new { Amount = 108, Message = "Hello" };
这不是动态类型,这是一种匿名的特定静态类型,即你没有给它起一个名字。但是编译器有/将,因此v仍然是强类型的,你得到intellisense而v.FieldIDontHave会给编译器错误。
答案 1 :(得分:1)
使用关键字var
var x = new {value = 3, name = "lol"};
Console.WriteLine(x.value); //prints 3
Console.WriteLine(x.name); //prints lol
答案 2 :(得分:1)
在评论中花时间到这个问题的底部后,我可以确认一些细节。
The Smarterer"回答"声明只有{ MyProperty = 2 }
是匿名类型的有效语法只有一半是正确的。语法是必需的,但与<{1}}关键字一起使用
new
在VS 2012中尝试以下操作将无法编译:
var anon = new { Name = "Adam", Age = 29 };
再次没有来自其他网站的确切问题和可用答案,很难为此网站上的问题和后续答案提供背景信息。希望这足以将其关闭。