3 回答
TA贡献1850条经验 获得超11个赞
您不能在C#中键入任何方法作为匿名类型的显式类型。可以说它们不能被“命名”,因此不能出现在元数据签名中。
如果您确实要返回匿名类型的值,则有2个选项
方法的返回类型为System.Object。然后,您可以使用其他方法进行邪恶的强制转换以获取类型化的值。这是非常脆弱的,我不建议这样做。
使用通用方法和类型推断技巧来获取正确的返回类型。对于您的方法,这将需要一个非常有趣的签名定义。
匿名类型并不是真的应该以这种方式传递。此时,您需要以这种方式在函数之间传递它们,最好是显式定义一个类型。
TA贡献1802条经验 获得超5个赞
使用var不会使其成为匿名类型。使用var just意味着将此变量设置为赋值右侧的可用类型。这只是短手。如果右边的东西是一个实类,则该变量将属于该类型。
例如:
var person = new Person { Name = "bob" };
即使使用var关键字,person变量的类型也为Person。
匿名类型是使用新的{Name = ...}创建的。在这种情况下,它是一个新的匿名类。唯一可以分配给它的是使用var(或对象)定义的变量,因为没有可用的现有名称。
例如:
var person = new { Name = "bob" };
在这种情况下,person是在运行时定义的匿名类型。
通常,正如@Chalkey所说,如果要将结果传递回另一种方法,请使用命名类型,而不是匿名类型。
如果您被迫使用匿名类型,则必须将其作为类型的对象传递回去Object,然后使用反射来获取其属性。
- 3 回答
- 0 关注
- 608 浏览
添加回答
举报