Ответ 1
Вы не можете добавлять элементы в массив, так как он имеет фиксированную длину, то, что вы ищете, это List<string>
, который впоследствии может быть обращен к массиву с помощью list.ToArray()
.
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<string>
, который впоследствии может быть обращен к массиву с помощью list.ToArray()
.
В качестве альтернативы вы можете изменить размер массива.
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "new string";
Используйте Список & lt; T> из System.Collections.Generic
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;
}
Eazy
// Create list
var myList = new List<string>();
// Add items to the list
myList.Add("item1");
myList.Add("item2");
// Convert to array
var myArray = myList.ToArray();
Если я не ошибаюсь, это:
MyArray.SetValue(ArrayElement, PositionInArray)
Вот как я могу добавить строку, когда это необходимо:
string[] myList;
myList = new string[100];
for (int i = 0; i < 100; i++)
{
myList[i] = string.Format("List string : {0}", i);
}
string[] coleccion = Directory.GetFiles(inputPath)
.Select(x => new FileInfo(x).Name)
.ToArray();
Почему бы вам не использовать цикл 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;
}
Этот код отлично подходит для подготовки динамических значений Array для spinner в Android:
List<String> yearStringList = new ArrayList<>();
yearStringList.add("2017");
yearStringList.add("2018");
yearStringList.add("2019");
String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]);
Я бы не использовал массив в этом случае. Вместо этого я бы использовал 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 одновременно, используйте это.
System.Array.Resize(ref arrayName, 0);
string[] MyArray = new string[] { "A", "B" };
MyArray = new List<string>(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]
Добавляем ссылку на Linq using System.Linq;
и используем предоставленный метод расширения Append
: public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Затем вам нужно преобразовать его обратно в string[]
, используя метод .ToArray()
.
Возможно, поскольку тип string[]
реализует IEnumerable
, он также реализует следующие интерфейсы: IEnumerable<char>
, IEnumerable
, IComparable
, IComparable<String>
, IConvertible
, IEquatable<String>
, ICloneable
using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();