在C#5和VS 2017中,我有,
var json = JsonConvert.SerializeObject(items);
// why json is dynamic here
Run Code Online (Sandbox Code Playgroud)
显然,SerializeObject返回字符串然后为什么json是动态类型而不是字符串.是项目是动态类型.
Jon*_*eet 10
显然,SerializeObject返回字符串然后为什么json是动态类型而不是字符串.
几乎涉及一个值的每个操作都dynamic被认为是动态的.这包括方法调用和大多数操作符.唯一的例外是:
new Foo(someDynamicValue)仍然是Foo)is操作者(这样的编译时间类型someDynamicValue is Foo仍是bool)as操作者(这样的编译时间类型someDynamicValue as Foo仍是Foo)(Foo) someDynamicValue仍然是Foo)如果你想要的类型json是string,刚刚宣布明确:
string json = JsonConvert.SerializeObject(items);
Run Code Online (Sandbox Code Playgroud)
注意,被SerializeObject调用的重载将取决于执行时间类型items- 与静态绑定调用不同,甚至在任何参数是动态的时候执行时都会发生重载解析.
当然,如果你知道你想要调用object重载,你可以items改为:
var json = JsonConvert.SerializeObject((object) items);
Run Code Online (Sandbox Code Playgroud)
现在调用是静态绑定的,编译器知道返回类型是string.
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |