我可以创建一个匿名类型变量,然后添加更多的属性?创建一个动态匿名类型变量
E.g. var x = new { Name = "Ahmed" };
并且想要添加Age
到它? 我该怎么做?
另一个问题:我在某些博客上看到了一个类型AnonymousType
这个类的名字空间是什么?这里是我的例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx
我可以创建一个匿名类型变量,然后添加更多的属性?创建一个动态匿名类型变量
E.g. var x = new { Name = "Ahmed" };
并且想要添加Age
到它? 我该怎么做?
另一个问题:我在某些博客上看到了一个类型AnonymousType
这个类的名字空间是什么?这里是我的例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx
第一个问题 - 你不能。
第二个问题 - AnonymousType是该文章作者创建的类型。您必须下载他的项目来源才能使用该类型。
不,你不能。
第二个问题:没有这样的事情,它可能指的是你无法访问的编译器生成的类。
不,这对您的应用程序来说效率不高。 你相信你不想介绍某种类吗?
using System;
class Generic{
public void doSomething(){}
private string name;
private string _othreFeature;
}
您可以随时使用新功能扩展它。
这是一个完全合乎逻辑的问题......我使用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 };
等等等等,你明白我的意思..这是非常有用的... :-)
干杯!
我知道这是非常古老的,但你的最后一行似乎是错误的,我只是为其他读者澄清。如果你只是想从LINQ语句中得到产品ID,你不会使用select(prod => new {prod.ID}),你只需要选择(prod =?prod.ID),它不使用匿名如果你想把名字与ID配对,那么是的,你会使用新的{prod.Name,prod.ID}这将是一个匿名类型。我再次... ...非常旧但仍然。 – MarqueIV 2013-04-18 17:05:50
这样的对象通常被称为“expando对象”。 C#没有*实现* expando对象,尽管C#4将支持*通过“dynamic”关键字调用* expando对象。考虑使用Python或JScript或其他本地支持expando对象的语言(如果这是您需要的)。 – 2009-10-05 14:18:34