我在c#中使用ASP.NET开发了一个应用程序,我遇到了以下错误:
未将对象引用设置为对象的实例。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
这是我的代码片段:
Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
它在我的本地测试代码非常好,但是当将相同的代码移动到我的虚拟环境时它遇到了这个错误。
我猜可能是因为虚拟环境中的dot net框架。
请提前帮助并谢谢你。
答案 0 :(得分:4)
最有可能parts[0]
为空。此错误等同于Java中的NullPointerException。
尝试在上一行中将局部变量设置为parts[0].ToString();
,并查看是否从该行抛出异常。
我建议您只在执行某项操作时执行匹配:
if(parts[0] != null){
Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
}
答案 1 :(得分:3)
从您获得的例外情况来看,parts
或parts[0]
似乎为空。
或许考虑为部件引入变量以查看是否为null,如果是,则使用默认值处理或向用户显示错误,或者如果适合您的情况则抛出异常。
object part = parts[0];
if (part == null)
{
// part is null, either handle with default value or error.
}
Match matchNew = ...;
答案 2 :(得分:2)
如果长度为0则很可能是你的数组“部件”然后失败。确保先测试它的长度。
答案 3 :(得分:1)
用这个替换代码:
if(parts != null && parts.Length>0)
{
if(parts[0] != null)
{
Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
}
}
它会正常工作。在您的情况下,数组parts
似乎是null
。但理想情况下,在尝试将其转换为字符串值之前,还应检查数组是否包含元素以及所讨论的元素是否为null。
答案 4 :(得分:0)
您的数组"parts"
似乎没有元素,因此parts[0]
为空,并且由于.ToString()
而发生异常,因为null无法转换为字符串。