【发布时间】:2013-05-31 12:58:30
【问题描述】:
我知道有很多关于 C# 匿名类型的问题,但没有一个能回答我。我也知道您可以返回匿名类型,将方法的结果分配给 dynamic 对象或将其转换为 this article Jon Skeet 状态,但在这两种情况下,您都需要知道哪些是匿名的成员对象,那么为什么我们不能有一个名为 anonymous 的关键字,它允许我们做这样的事情:
anonymous F()
{
...
return new { a = 5, b = "some string" };
}
然后像这样使用它:
anonymous a = F();
但是有静态类型?
我的意思是,为什么编译器不能静态知道哪些是匿名对象 F 方法返回的成员,所以给我智能感知?
【问题讨论】:
-
我确信编译器可以做到这一点,但这真的值得吗?我们已经命名了类型、动态和 ExpandoObject。支持这样的匿名类型无法使用其中之一解决的强有力的案例是什么?
-
好吧,如果我做一个
if语句并在第一种情况下返回new { a = 5 },在第二种情况下返回new { b = "some thing" }。 -
如果方法中有条件并且方法可以返回2个不同的匿名对象,编译器会怎么做?
-
@e.campver 然后使用命名类型。老实说
-
我不介意你接受@Pako 的回答)
标签: c# anonymous-types static-typing static-binding