繁体   English   中英

c#System.ArgumentNullException:值不能为null。 参数名称:来源

[英]c# System.ArgumentNullException: Value cannot be null. Parameter name: source

我创建的程序需要从网站上读取信息,然后将其存储。 我收到错误消息:

System.ArgumentNullException:值不能为null。
参数名称:来源
在System.Linq.Enumerable.Select [TSource,TResult](IEnumerable 1 source, Func 2选择器)处

但是,它并不总是错误运行。 正如有时它起作用,有时却不起作用。 怎么会这样? 这是给我错误行4的代码。

IEnumerable<string> webtemp = Enumerable.Empty<string>();
if (datastring.Contains("today_nowcard-temp"))
{
    webtemp = doc.DocumentNode.SelectNodes("//div[@class = 'today_nowcard-temp']/span").Select(d => d.InnerText.Trim());

    foreach (var this_header in webtemp)
    {
        string[] temporary = this_header.Trim().Replace("Â", "-").Replace(" ", "-").Split('-');
        int f = (Convert.ToInt32(temporary[0]));
        _actualData[0].temp = GetCelsius(f);
        //Console.WriteLine(_actualData[0].temp);
    }
}

此异常的原因是您的SelectNodes方法返回的值。 有时它返回null,然后您尝试对null执行Linq操作,并生成错误。 因此您可以对此执行空检查

var temp= doc.DocumentNode.SelectNodes("//div[@class = 'today_nowcard-temp']/span");

if(temp != null){
//TODO
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM