【问题标题】:Object reference not set to an instance of object when using a List<T> in C# [duplicate]在 C# 中使用 List<T> 时,对象引用未设置为对象的实例 [重复]
【发布时间】:2011-05-26 21:31:26
【问题描述】:

我有以下代码 sn-p 产生编译错误:

public List<string> batchaddresses;

public MapFiles(string [] addresses)
{
    for (int i = 0; i < addresses.Count(); i++)
    {
        batchaddresses.AddRange(Directory.GetFiles(addresses[i], "*.esy"));
    }
}

当我尝试使用List&lt;T&gt;.AddRange() 方法时出现错误:

Object reference not set to an instance of an object

我做错了什么?

【问题讨论】:

  • 很明显,“对象引用未设置为对象的实例”在您尝试执行代码时发生。这不是编译错误,而是运行时错误。

标签: c# generics nullreferenceexception


【解决方案1】:

批处理地址在哪里初始化?

声明变量是不够的。你必须像这样初始化它:

// In your constructor
batchaddresses = new List<string>();

// Directly at declaration:
public List<string> batchaddresses = new List<string>();

【讨论】:

    【解决方案2】:

    你必须初始化列表

    List&lt;String&gt; batchaddresses = new List&lt;String&gt;();

    【讨论】:

      【解决方案3】:

      batchaddresses 字段尚未初始化。您可以将其初始化为声明的一部分:

      public List<string> batchaddresses = new List<string>();
      

      【讨论】:

        【解决方案4】:

        从你的 sn-p 看,batchaddresses 似乎没有被初始化。将这一行替换为:

        public List<string> batchaddresses = new List<string>();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-03
          • 1970-01-01
          • 2010-09-12
          • 2013-07-07
          • 2013-11-28
          • 1970-01-01
          • 2016-10-27
          • 2011-04-15
          相关资源
          最近更新 更多