【发布时间】:2010-11-22 17:08:55
【问题描述】:
我知道我不能写这样的方法:
public var MyMethod()
{
return new{ Property1 = "test", Property2="test"};
}
否则我可以这样做:
public object MyMethod()
{
return new{ Property1 = "test", Property2="test"}
}
但我不想做第二个选项,因为如果我这样做,我将不得不使用反射。
我为什么要这样做:
今天我在我的 aspx 页面中有一个方法,它返回一个数据表作为结果,我 无法更改它,我试图将此 DataTable 转换为具有我想要工作的属性的匿名方法和。我不想创建一个类只是为了做到这一点,因为我需要多次执行相同的查询,所以我认为创建一个返回匿名类型的方法会是一个好主意。
【问题讨论】:
-
你会用它做什么?你是怎么得出你想做这样的事情的结论的?
-
@Guffa,我在我的 aspx 页面中有一个方法,它返回一个数据表作为结果,我试图将此数据表转换为具有我想要使用的属性的匿名方法。我不想创建一个类只是为了做到这一点,因为我需要多次执行相同的查询,所以我通过创建一个返回匿名方法的方法将是一个好主意。
-
@Cleiton - 创建一个包含数据的类将花费更少的精力。我开始意识到,仅仅因为我可以使用匿名类型轻松地操作数据,这并不意味着当我需要将它们从一层传递到另一层时,我应该停止创建类来定义这些类型。
-
@Guffa:有时从函数返回多个值或相关值的集合很方便。大多数语言都为临时的即时集合提供元组,但 C# 3.5 尚不支持该功能。唯一的 C# 替代方案是:创建一系列外参数,将临时对象包装在一个类中,或返回一个对象 []。
-
不要忘记,从 C# 3.0 开始,您可以声明一个只需很少输入的类型。示例:
public class NonAnonymousType { public int Foo { get; set; } public string Bar { get; set; } }(格式请见谅)
标签: c# .net anonymous-types