Как добавить строку в массив string[]? Нет функции .Add

private string[] ColeccionDeCortes(string Path)
{
    DirectoryInfo X = new DirectoryInfo(Path);
    FileInfo[] listaDeArchivos = X.GetFiles();
    string[] Coleccion;

    foreach (FileInfo FI in listaDeArchivos)
    {
        //Add the FI.Name to the Coleccion[] array, 
    }

    return Coleccion;
}

Я'хочу преобразовать FI.Name в строку и затем добавить ее в мой массив. Как я могу это сделать?

Решение

Вы не можете добавлять элементы в массив, так как он имеет фиксированную длину. Вам нужен List, который впоследствии может быть превращен в массив с помощью list.ToArray().

Комментарии (2)

Кроме того, вы можете изменять размер массива.

Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "new string";
Комментарии (2)

Использовать List из System.Collections.Generic

List myCollection = new List();

…

myCollection.Add(aString);

Или сокращенно (с использованием инициализатора коллекции):

List myCollection = new List {aString, bString}

Если вам действительно нужен массив в конце, используйте

myCollection.ToArray();

Возможно, лучше абстрагироваться от интерфейса, например IEnumerable, а затем просто возвращать коллекцию.

Edit: Если вы должны использовать массив, вы можете предварительно распределить его до нужного размера (т.е. до количества 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;
}
Комментарии (2)

Изи

// Create list
var myList = new List();

// Add items to the list
myList.Add("item1");
myList.Add("item2");

// Convert to array
var myArray = myList.ToArray();
Комментарии (1)

Если я'м не ошибаюсь это:

MyArray.SetValue(ArrayElement, PositionInArray)
Комментарии (0)

Это, как я добавить строку при необходимости:

string[] myList;
myList = new string[100];
for (int i = 0; i < 100; i++)
{
    myList[i] = string.Format("List string : {0}", i);
}
Комментарии (0)
string[] coleccion = Directory.GetFiles(inputPath)
    .Select(x => new FileInfo(x).Name)
    .ToArray();
Комментарии (0)

Почему Дон'т вы использовать цикл for вместо foreach для. В этом случае, нет никакого способа, вы можете получить индекс текущей итерации цикла foreach.

Имя файла может быть добавлен в строку[] таким образом,

private string[] ColeccionDeCortes(string Path)
{
  DirectoryInfo X = new DirectoryInfo(Path);
  FileInfo[] listaDeArchivos = X.GetFiles();
  string[] Coleccion=new string[listaDeArchivos.Length];

  for (int i = 0; i < listaDeArchivos.Length; i++)
  {
     Coleccion[i] = listaDeArchivos[i].Name;
  }

  return Coleccion;
}
Комментарии (1)

Этот код прекрасно работает для подготовки массива динамических значений для Spinner в Андроид:

    List yearStringList = new ArrayList();
    yearStringList.add("2017");
    yearStringList.add("2018");
    yearStringList.add("2019");

    String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]);
Комментарии (0)

Добавление ссылки с использованием системы по LINQ.Средства LINQ; и использовать предоставленные метод расширениядобавить:публичный статический тип IEnumerable<метод> добавить<метод>(этот интерфейс IEnumerable<метод> источник, метод элементу) Затем вы должны преобразовать его обратно в строку[]помощью.Метод метод toArray ()`.

Возможно, потому, что тип строка[] реализует интерфейс IEnumerable, он также реализует следующие интерфейсы: интерфейс IEnumerable<чар>, интерфейс IEnumerable, интерфейс icomparable, интерфейс icomparable И Л;строка>, интерфейса iconvertible, интерфейс IEquatable на<строка> У, ICloneable

using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();  
Комментарии (0)

чтобы очистить массив и количество его's элементов = 0 в то же время, использовать это..

System.Array.Resize(ref arrayName, 0);
Комментарии (0)
string[] MyArray = new string[] { "A", "B" };
MyArray = new List(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]
Комментарии (1)

Я бы не использовать массив в этом случае. Вместо этого я хотел бы использовать 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;
}
Комментарии (0)