[英]Is it possible to use the c# “interactive window” instead of the immediate window in VS2017
[英]json_serializer.DeserializeObject, immediate window, VS2017
我是 ac# 初学者(但对 JavaScript 非常熟悉),我正在通过调试示例代码来学习。 我现在有一个关于“立即窗口”的问题。
我在
(... nested object sent via JSON from some external javascript code ...)
var json_serializer = new JavaScriptSerializer();
var value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);
然后在立即窗口中评估以下内容
value_list
Count = 4
[0]: {[type, msg]}
[1]: {[settings, System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
[2]: {[hello, edge]}
[3]: {[txt, notepad.exe]}
value_list["txt"]
"notepad.exe"
value_list["settings"]
Count = 2
[0]: {[host, test.com]}
[1]: {[port, 80]}
到现在为止还挺好。
然后我试过了
value_list["settings"]["host"]
但只得到“错误 CS0021:无法将 [] 索引应用于‘对象’类型的表达式”。
如何在即时窗口中打印主机的值?
C# 是一种强类型语言。
你有
var value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);
var
表示变量的类型已经在编译期间由编译器确定。 由于右侧的强制转换,编译器确定:
IDictionary<string, object> value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);
因此, value_list
的类型为IDictionary<string, object>
。 因此, value_list["settings"]
是object
类型。
要查看立即窗口中的值,请将中间结果(类型为object
)转换为适当的类型。
((IDictionary<string, object>)value_list["settings"])["host"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.