错误:对象引用未设置为对象的实例

时间:2011-09-21 04:12:14

标签: c# asp.net visual-studio object

我在c#中使用ASP.NET开发了一个应用程序,我遇到了以下错误:

未将对象引用设置为对象的实例。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

这是我的代码片段:

Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);

它在我的本地测试代码非常好,但是当将相同的代码移动到我的虚拟环境时它遇到了这个错误。

我猜可能是因为虚拟环境中的dot net框架。

请提前帮助并谢谢你。

5 个答案:

答案 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)

从您获得的例外情况来看,partsparts[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无法转换为字符串。