相关疑难解决方法(0)

C#DLR,使用Dynamic关键字进行数据类型推断

只是问问而已 :

为什么'withOffset'变量被推断为动态,因为Parse方法返回Struct?

dynamic str = "22/11/2013 10:31:45 +00:01";
var withOffset = DateTimeOffset.Parse(str);
Run Code Online (Sandbox Code Playgroud)

并在明确地将其退回到Struct之后?

dynamic str = "22/11/2013 10:31:45 +00:01";
var withOffset = DateTimeOffset.Parse((string)str);
Run Code Online (Sandbox Code Playgroud)

因为DateTimeOffset.Parse的返回类型是DateTimeOffset,并且编译器必须知道.记住这一点,它在运行时调用的任何方法,返回始终是DateTimeOffset.

规格说明

由于您的方法将dynamic作为参数,因此它符合"动态绑定"的条件

有点可疑.

有这样的规范有什么意义?或者在什么情况下DateTimeOffset.Parse不会返回STRUCT(暂时忘记DLR ..)?

编译器需要聪明,如果类中的所有方法/重载具有相同的返回类型以从长远来看获得性能优势.

.net c# dynamic-language-runtime

5
推荐指数
1
解决办法
570
查看次数

标签 统计

.net ×1

c# ×1

dynamic-language-runtime ×1