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;
}
Gostaria de converter o FI.Name
em uma string e adicioná-lo à minha matriz. Como posso fazer isso?
c#
arrays
long-filenames
Sergio Tapia
fonte
fonte
Como alternativa, você pode redimensionar a matriz.
fonte
Array.Resize
é a maneira correta de redimensionar uma matriz. Se você adicionar um comentário antes do snippet de código, dizendo que raramente é a melhor maneira de lidar com situações em que a matriz representa uma coleção redimensionável e você recebe +1. :)Use a Lista <T> de System.Collections.Generic
Ou, abreviação (usando o inicializador de coleção):
Se você realmente deseja uma matriz no final, use
É melhor abstrair para uma interface, como IEnumerable, e apenas retornar a coleção.
Editar: se você precisar usar uma matriz, poderá pré-alocá-la no tamanho certo (ou seja, o número de informações de arquivo que você possui). Em seguida, no loop foreach, mantenha um contador para o índice da matriz que você precisa atualizar a seguir.
fonte
facil
fonte
Add
nãoadd
.Se não me engano, é:
fonte
É assim que adiciono uma string quando necessário:
fonte
fonte
Por que você não usa um loop for em vez de usar o foreach. Nesse cenário, não há como obter o índice da iteração atual do loop foreach.
O nome do arquivo pode ser adicionado à string [] dessa maneira,
fonte
listaDeArchivos
. Se você não o fizer (isto é, se alguma vez puder mudar e seria complexo fazer uma contagem antecipada, porque seus objetos são modelos aninhados ou campos de modelos que podem / não podem ser preenchidos, por exemplo) e você só quer fazerstring[] Coleccion;
em seguida, atribua-o comoint idx = 0; Coleccion[idx] = fileName; idx++;
, ele dirá a vocêUse of unassigned local variable 'Coleccion'
. Apenas para sua informação, para quem deseja adaptar isso para ser mais dinâmico, há uma armadilha.Esse código funciona muito bem para preparar os valores dinâmicos Array for spinner no Android:
fonte
para limpar a matriz e tornar o número de elementos = 0 ao mesmo tempo, use isto ..
fonte
Eu não usaria uma matriz neste caso. Em vez disso, eu usaria um StringCollection.
fonte
fonte
Adicionando uma referência ao Linq
using System.Linq;
e use o método de extensão fornecidoAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
você precisará convertê-lo novamente parastring[]
usar o.ToArray()
métodoÉ possível, porque o tipo de
string[]
implementosIEnumerable
, também implementa as seguintes interfaces:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
fonte