这个答案描述了构建一个匿名结构'在C#中:Is there an equivalent C# syntax for C's inline anonymous struct definition?
var x = new { SomeField = 1, SomeOtherField = "Two" };
从方法中返回它是否有效以避免必须明确定义结构?对该答案的评论说不,但那是2011年......
答案 0 :(得分:6)
那不是struct
,它是C#中的Anonymous Type(编译器实际上是class
实现的)。匿名类型在本地范围内声明,并且您不能将其作为C#中的强类型类传递,因为它是编译器生成的类。您可以选择使用object
或dynamic
作为返回类型,但仍然会丢失基础类型。
总结一下你的问题,答案很简单,而不是你希望它的工作方式"。
答案 1 :(得分:3)
MSDN说:
匿名类型是直接从object派生的类类型,不能转换为除object之外的任何类型。尽管您的应用程序无法访问它,但编译器为每个匿名类型提供了一个名称。从公共语言运行库的角度来看,匿名类型与任何其他引用类型没有区别。
所以你可以将它作为object
返回,但之后你不能对它们做太多的事情,除非你使用反射或动态。
如果您的真实意图要返回多个值,请使用Tuple<...>
类型:
return Tuple.Create<int, string>(1, "Two");