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
строку, а затем добавить его в мой массив. Как я могу это сделать?
c#
arrays
long-filenames
Серхио Тапиа
источник
источник
Кроме того, вы можете изменить размер массива.
источник
Array.Resize
это правильный способ изменить размер массива. Если вы добавите комментарий перед фрагментом кода, говоря, что это редко лучший способ справиться с ситуациями, когда массив представляет коллекцию с изменяемым размером, вы получаете +1. :)Использовать список <T> из System.Collections.Generic
Или сокращение (используя инициализатор коллекции):
Если вам действительно нужен массив в конце, используйте
Возможно, вам лучше абстрагироваться от интерфейса, такого как IEnumerable, а затем просто вернуть коллекцию.
Редактировать: если вам нужно использовать массив, вы можете предварительно выделить его до нужного размера (то есть количества FileInfo, которое у вас есть). Затем в цикле foreach сохраните счетчик для индекса массива, который необходимо обновить следующим.
источник
Eazy
источник
Add
нетadd
.Если я не ошибаюсь, это:
источник
Вот как я могу добавить строку, когда это необходимо:
источник
источник
Почему бы вам не использовать цикл for вместо foreach. В этом случае нет способа получить индекс текущей итерации цикла foreach.
Таким образом, имя файла может быть добавлено в строку [],
источник
listaDeArchivos
. Если вы этого не сделаете (то есть, если это когда-либо может измениться, и будет сложно сделать подсчет заранее, потому что ваши объекты являются вложенными моделями или полями модели, которые могут / не могут быть заполнены, например), и вы просто хотите сделатьstring[] Coleccion;
затем назначьте его такint idx = 0; Coleccion[idx] = fileName; idx++;
, как он вам скажетUse of unassigned local variable 'Coleccion'
. Просто FYI для тех, кто хочет адаптировать это, чтобы быть более динамичным, что есть ловушка.Этот код отлично подходит для подготовки динамических значений Array для spinner в Android:
источник
чтобы очистить массив и сделать количество его элементов = 0 одновременно, используйте это ..
источник
Я бы не использовал массив в этом случае. Вместо этого я бы использовал StringCollection.
источник
источник
Добавьте ссылку на 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
источник