Foo <dynamic>(...)和Foo <object>(...)之间有区别吗?

时间:2017-07-13 10:59:22

标签: c# generics

我正在审核一些代码,我发现了以下内容:

public static void Foo<T>(T t) { //whatever }

dynamic someDynamicValue = ....
Foo(someDynamicValue); //does making this call dynamicly make any sense?

如果您实际检查T内的Foo类型,您会看到它是object。那么,为什么不简单地强制参数的类型为object并跳过让类型推断解析为dynamic的整个运行时价格?

var someDynamicValue = ....
Foo(someDynamic as object);

重要提示:我知道,完全确定someDynamic不是值类型。

我是否遗漏了某些内容并且更改了代码的语义,或者这是一个无害的修改?

另一个问题alt如果Foo的签名在Foo<dynamic>(dynamic t),那么泛型类型参数将解析为运行时类型而不是object。但事实并非如此。

0 个答案:

没有答案