我知道有很多关于C#匿名类型的问题,但没有一个能回答我。我也知道你可以返回匿名类型,或者将方法的结果分配给dynamic
对象,或者将它转换为this article由Jon Skeet状态,但在这两种情况下你都需要知道哪些是匿名对象的成员,为什么我们不能有一种名为anonymous
的关键字允许我们这样做:
anonymous F()
{
...
return new { a = 5, b = "some string" };
}
然后像这样使用它:
anonymous a = F();
但是有静态输入?
我的意思是,为什么编译器不能静态地知道哪些是匿名对象F
方法的成员返回,所以给我智能感知?
答案 0 :(得分:3)
你会做什么而不是做这样的事情:
anonymous F()
{
if (something) return new { a = 5 };
else return new { b = 1, z = "asdf" };
}
编译器如何知道返回哪种类型呢?它是否应该在设计时限制您使用错误消息,那些匿名类型不一样?值得努力吗?您可以使用dynamic
来处理此类情况,或者根据需要创建实际的类 - 以使代码清晰。