从方法接收匿名类型,在编译时知道其成员

时间:2013-05-31 12:58:30

标签: c# anonymous-types static-typing static-binding

我知道有很多关于C#匿名类型的问题,但没有一个能回答我。我也知道你可以返回匿名类型,或者将方法的结果分配给dynamic对象,或者将它转换为this article由Jon Skeet状态,但在这两种情况下你都需要知道哪些是匿名对象的成员,为什么我们不能有一种名为anonymous的关键字允许我们这样做:

anonymous F()
{
    ...
    return new { a = 5, b = "some string" };
}

然后像这样使用它:

anonymous a = F();

但是有静态输入? 我的意思是,为什么编译器不能静态地知道哪些是匿名对象F方法的成员返回,所以给我智能感知?

1 个答案:

答案 0 :(得分:3)

你会做什么而不是做这样的事情:

anonymous F()
{
     if (something) return new { a = 5 };
     else return new { b = 1, z = "asdf" };
}

编译器如何知道返回哪种类型呢?它是否应该在设计时限制您使用错误消息,那些匿名类型不一样?值得努力吗?您可以使用dynamic来处理此类情况,或者根据需要创建实际的类 - 以使代码清晰。