2009-10-05 66 views
3

我可以创建一个匿名类型变量,然后添加更多的属性?创建一个动态匿名类型变量

E.g. var x = new { Name = "Ahmed" };并且想要添加Age到它? 我该怎么做?

另一个问题:我在某些博客上看到了一个类型AnonymousType这个类的名字空间是什么?这里是我的例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx

+3

这样的对象通常被称为“expando对象”。 C#没有*实现* expando对象,尽管C#4将支持*通过“dynamic”关键字调用* expando对象。考虑使用Python或JScript或其他本地支持expando对象的语言(如果这是您需要的)。 – 2009-10-05 14:18:34

回答

6

第一个问题 - 你不能。

第二个问题 - AnonymousType是该文章作者创建的类型。您必须下载他的项目来源才能使用该类型。

0

不,你不能。

第二个问题:没有这样的事情,它可能指的是你无法访问的编译器生成的类。

0

不,这对您的应用程序来说效率不高。 你相信你不想介绍某种类吗?

using System; 
class Generic{ 

    public void doSomething(){} 

    private string name; 
    private string _othreFeature; 

} 

您可以随时使用新功能扩展它。

0

这是一个完全合乎逻辑的问题......我使用Java和C#都是这样,这是我的一个大宠物...事实上几乎所有的语言都有某种匿名类型lol ... PHP,JavaScript,C#,vb(全部)和列表继续..

这是一个非常有用的功能,当你基本上把数据扔进一个对象,并且你不需要为它创建一个类。

物质其实这正是LINQ利用..

var someObject (can be interable/Enumerable) = 
    from p in products 
    where p.id == 123 
    select new { productid }; 

等等等等,你明白我的意思..这是非常有用的... :-)

干杯!

+0

我知道这是非常古老的,但你的最后一行似乎是错误的,我只是为其他读者澄清。如果你只是想从LINQ语句中得到产品ID,你不会使用select(prod => new {prod.ID}),你只需要选择(prod =?prod.ID),它不使用匿名如果你想把名字与ID配对,那么是的,你会使用新的{prod.Name,prod.ID}这将是一个匿名类型。我再次... ...非常旧但仍然。 – MarqueIV 2013-04-18 17:05:50