【问题标题】:Cannot increment integer inside the foreach loop无法在 foreach 循环内增加整数
【发布时间】:2013-09-23 16:52:15
【问题描述】:

我有一个从列表转换为数组的 C# 方法。代码如下:

public String[] ConvertToArray(List<InstallationControl> list)
        {
            String[] Array = null;
            Int32 i = 0;
            foreach (var item in list)
            {
                Array[i] = item.Value.ToString();
                i++;
            }

            return Array;
        }

但是,它总是给我 Null 异常。谁可以给我解释一下这个?

【问题讨论】:

  • 你没有初始化你的数组。字符串[] 数组 = 新字符串[list.Count]
  • 我认为您应该只使用 ToArray() 方法...或者将您的循环重写为更有意义的东西,例如传统的 for 而不是带有索引变量的 foreach...这不就是破坏了使用foreach的目的吗?另外将您的数组初始化为list.Count()

标签: c# arrays list methods argumentnullexception


【解决方案1】:

您没有初始化要填充的数组。

String[] Array = new String[list.Count]

应该可以解决你的问题。

这将创建一个 [list.Count] 字符串数组。您应该知道,这些字符串中的每一个都是空的,直到您为其赋值。

MSDN Arrays

【讨论】:

    【解决方案2】:

    你需要初始化数组

    String[] Array = new String[list.Count];
    

    或者干脆

    String[] Array =list.Select(x=>x.Value.ToString()).ToArray();
    

    【讨论】:

    • 我猜你的意思是list.Select(r=&gt; r.Value.ToString()).ToArray()
    【解决方案3】:

    换行初始化数组

    String[] Array = new String[list.Count];
    

    应该有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2017-11-14
      • 2020-05-26
      • 1970-01-01
      • 2014-12-14
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多