为什么不能在创建它的方法之外使用匿名类型?

时间:2010-04-29 16:11:47

标签: c# anonymous-types

据我所知,如果我将它转换为命名类型,我可以随心所欲地使用它,但如果我可以保持方法调用之间的匿名性,它会使代码更加整洁。

3 个答案:

答案 0 :(得分:1)

虽然它应该避免,因为它不是很干净,你可能会考虑来自Jon Skeet的this黑客。但是,如果可能的话,应该避免。

答案 1 :(得分:1)

将您的方法签名视为合同。您的方法说“我保证会返回包含以下字段的内容。”如果从方法返回匿名对象,则没有合同。你只是说“这里有一些数据,祝你好运!”

如果C#4完全是一个选项,你可以使用tuples返回更多任意数据。

答案 2 :(得分:-2)

这是一个猜测...但我太“太棒了”我“确定”我是对的......

匿名类型真的不是“匿名”。表示未知类型的类是在运行时堆栈上的方法调用的本地运行时生成的(因此是仅方法范围)。从函数调用返回(弹出堆栈)会丢失该范围内的所有对象,包括使用该方法调用隐藏在堆栈中的匿名类。

猜猜......