Это требует, чтобы Ваш алгоритм на самом деле знал что Ваш разговор о. Это может быть сделано в некоторой элементарной форме, просто сравнив слова и ища синонимы и т.д., но любой вид точного результата потребовал бы некоторой формы аналитики.
Вы не можете добавлять элементы в массив, поскольку он имеет фиксированную длину, что вы ищете List
, который позже можно превратить в массив с помощью list.ToArray ()
.
Используйте List
List<string> myCollection = new List<string>();
…
myCollection.Add(aString);
Или сокращенно (используя инициализатор коллекции):
List<string> myCollection = new List<string> {aString, bString}
Если вам действительно нужен массив в конце, используйте
myCollection.ToArray();
Возможно, вам лучше абстрагироваться от интерфейса, такого как IEnumerable, а затем просто вернуть коллекцию.
Изменить: если вы должны использовать массив, вы можете предварительно выделить его до нужного размера (т.е. FileInfo у вас есть). Затем, в цикле foreach, поддерживайте счетчик для индекса массива, который необходимо обновить следующим.
private string[] ColeccionDeCortes(string Path)
{
DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
string[] Coleccion = new string[listaDeArchivos.Length];
int i = 0;
foreach (FileInfo FI in listaDeArchivos)
{
Coleccion[i++] = FI.Name;
//Add the FI.Name to the Coleccion[] array,
}
return Coleccion;
}
Я бы не использовал массив в этом случае. Вместо этого я бы использовал StringCollection.
using System.Collections.Specialized;
private StringCollection ColeccionDeCortes(string Path)
{
DirectoryInfo X = new DirectoryInfo(Path);
FileInfo[] listaDeArchivos = X.GetFiles();
StringCollection Coleccion = new StringCollection();
foreach (FileInfo FI in listaDeArchivos)
{
Coleccion.Add( FI.Name );
}
return Coleccion;
}
string[] coleccion = Directory.GetFiles(inputPath)
.Select(x => new FileInfo(x).Name)
.ToArray();
Кроме того, вы можете изменить размер массива.
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "new string";