【问题标题】:Error: Object reference not set to an instance of an object错误:对象引用未设置为对象的实例
【发布时间】:2011-11-21 14:40:29
【问题描述】:

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

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

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

异常详情:System.NullReferenceException:对象引用未设置为对象的实例。

这是我的代码片段:

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

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

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

请帮助并提前感谢您。

【问题讨论】:

  • 我更倾向于相信你的代码有问题。
  • 感谢您的回复,我设法将代码从parts[0].ToString() 更改为parts[0] + "",然后它工作正常...请解释...

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


【解决方案1】:

parts[0] 很可能为空。此错误相当于 Java 中的 NullPointerException。

尝试在上一行将局部变量设置为parts[0].ToString();,然后查看是否从该行抛出异常。

我建议您仅在有需要的情况下才进行比赛:

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

【讨论】:

    【解决方案2】:

    如果它的长度为 0,它很可能是您的数组“部分”,那么它将失败。请务必先测试它的长度。

    【讨论】:

      【解决方案3】:

      从您得到的异常来看,partsparts[0] 似乎为空。

      也许考虑为部件引入一个变量以查看它是否为空,如果是,则使用默认值处理或向用户显示错误,或者在适合您的情况时抛出异常。

      object part = parts[0];
      if (part == null)
      {
          // part is null, either handle with default value or error.
      }
      
      Match matchNew = ...;
      

      【讨论】:

        【解决方案4】:

        您的数组"parts" 似乎没有元素,因此parts[0] 为null,并且由于.ToString() 而发生异常,因为null 无法转换为字符串。

        【讨论】:

          【解决方案5】:

          替换代码:

          if(parts != null && parts.Length>0)
          {    
          
              if(parts[0] != null)
              {
                 Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
              }
          }
          

          ,它会很好。 parts 987654322似乎是null在您的情况下。但是,理想情况下,您还应该检查数组是否有元素,并且如果在尝试将其转换为字符串值之前,则遇问的元素不是null。

          【讨论】:

            猜你喜欢
            • 2011-07-09
            • 2012-08-31
            • 2012-10-01
            • 1970-01-01
            • 1970-01-01
            • 2022-08-18
            • 2012-09-19
            相关资源
            最近更新 更多