c#不赋值数组,但可以给它赋任何值



我有一点麻烦让这个c#代码工作,我可以让它工作,如果我使用控制台。写,我已经注释掉了,但我可以得到相同的结果存储在这个数组中,供我在我的程序的不同部分使用。

FileInfo[] selectionFileOrder;
     for (int index = 0; index < dateAllOrder.Length; index++)
     {
          if (dateAllOrder[index].LastAccessTime.Month == DateTime.Now.Month)
          {
               int i = 0;
               i++;
               selectionFileOrder[i] = dateAllOrder[index];
               // Console.Write("{1}. {0}", dateAllOrder[index].Name, index);
               // Console.Write(" ({0}) ", dateAllOrder[index].Length);
               Console.WriteLine();
          }
      }

我看了看谷歌,似乎找不到我的问题的任何答案,我知道这是变量selectionFileOrder是无符号的,但我没有任何东西分配给它。任何新想法都会有帮助的。

谢谢

您需要初始化数组:

FileInfo[] selectionFileOrder = new FileInfo[dateAllOrder.Length];

或者更好,使用List:

IList<FileInfo> selectionFileOrder = new List<FileInfo>();
foreach(FileInfo item in dateAllOrder)
{
     if (item.LastAccessTime.Month == DateTime.Now.Month)
     {
          selectionFileOrder.Add(item);
          // Console.Write("{1}. {0}", dateAllOrder[index].Name, index);
          // Console.Write(" ({0}) ", dateAllOrder[index].Length);
          Console.WriteLine();
     }
}

或者最好使用LINQ!

我将使用LINQ来做到这一点:

FileInfo[] selectionFileOrder = dateAllOrder.Where(
    d => d.LastAccessTime.Month == DateTime.Today.Month).ToArray();

因为看起来你事先不知道数组需要多大,我建议使用如下列表:

 var selectionFileOrder = new List<FileInfo>();
 for (int index = 0; index < dateAllOrder.Length; index++)
 {
      if (dateAllOrder[index].LastAccessTime.Month == DateTime.Now.Month)
      {
           selectionFileOrder.Add(dateAllOrder[index]);
      }
  }

如果你愿意,可以稍后将列表赋值给数组

FileInfo[] array = selectionFileOrder.ToArray();

而且看起来你有一个bug, i总是为1,我认为这不是你想要的。

使用列表而不是数组来允许您动态地增加selectionFileOrder的大小,如下所示:

 var selectionFileOrder = new List<FileInfo>();
 for (int index = 0; index < dateAllOrder.Length; index++)
 {
      if (dateAllOrder[index].LastAccessTime.Month == DateTime.Now.Month)
      {
           selectionFileOrder.Add(dateAllOrder[index]);
      }
  }

或者直接使用LINQ:

var selectionFileOrder = dateAllOrder.Where(o => o.LastAccessTime.Month == DateTime.Now.Month).ToArray();

您需要在变量中放入一个数组:

selectionFileOrder = new FileInfo[942];

确保将942更改为有意义的相关数字

相关内容

最新更新