1

我知道有很多关于 C# 匿名类型的问题,但没有一个回答我。我也知道您可以返回匿名类型,或者将方法的结果分配给一个dynamic对象,或者按照 Jon Skeet 的这篇文章所述将其强制转换,但在这两种情况下,您都需要知道哪些是匿名对象的成员,那么为什么难道我们不能有一种名为的关键字anonymous,它允许我们做这样的事情:

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

然后像这样使用它:

anonymous a = F();

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

4

1 回答 1

3

你会停止做这样的事情:

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

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

于 2013-05-31T13:04:16.190 回答