【发布时间】:2019-02-15 14:48:06
【问题描述】:
我在使用 if 语句检查对象是否为空时遇到问题。
我有一个 webClient 在 try/catch 中从网站中提取 JSON 字符串。如果出错,那是因为 API 中不存在 3 位数的国家/地区,我只想跳过它。
这是我的代码:
System.Net.WebClient wc = new System.Net.WebClient();
RootObject ro;
try
{
string resp = wc.DownloadString("https://restcountries.eu/rest/v2/alpha/" + Row.Code.ToString());
JavaScriptSerializer js = new JavaScriptSerializer();
ro = js.Deserialize<RootObject>(resp);
}
catch (Exception e)
{ }
if (ro.Region != null)
{
Row.Region = ro.Region;
Row.SubRegion = ro.Subregion;
}
RootObject 是一个要反序列化的类。这很好用。
但是,我在 if 语句中收到一个错误,即“使用未分配的类 'ro'。
有人可以帮我解决这个问题吗? ro 在 if 中按预期工作?
我也试过检查一个特定的节点,但它仍然挂在“ro”部分。
另外,这是 SSIS 中的一个脚本组件。
谢谢
【问题讨论】:
-
如果抛出错误并执行
catch路径ro未初始化。这就是您收到此错误的原因。 -
然后分配它。如果没有分配,你想让程序做什么?
-
我希望它跳过并退出。如果API没有返回,基本上就完成了
-
将 RootObject ro 更改为 RootObject ro = null;并将 ro.Region != null 更改为 ro?.Region != null
-
Murray 解决了它。我以为它一开始是空的