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;
}
Saya ingin mengonversi FI.Name
ke string dan kemudian menambahkannya ke array saya. Bagaimana saya bisa melakukan ini?
c#
arrays
long-filenames
Sergio Tapia
sumber
sumber
Atau, Anda dapat mengubah ukuran array.
sumber
Array.Resize
adalah cara yang tepat untuk mengubah ukuran array. Jika Anda menambahkan komentar sebelum cuplikan kode yang mengatakan itu jarang cara terbaik untuk menangani situasi di mana array mewakili koleksi resizable Anda mendapat +1. :)Gunakan Daftar <T> dari System.Collections.Generic
Atau, singkatan (menggunakan initialiser koleksi):
Jika Anda benar-benar menginginkan sebuah array di akhir, gunakan
Anda mungkin lebih baik mengabstraksi ke antarmuka, seperti IEnumerable, lalu hanya mengembalikan koleksi.
Sunting: Jika Anda harus menggunakan array, Anda dapat melakukan praallokasi ke ukuran yang tepat (yaitu jumlah FileInfo yang Anda miliki). Kemudian, di loop foreach, pertahankan counter untuk indeks array yang perlu Anda perbarui berikutnya.
sumber
mudah
sumber
Add
, tidakadd
.Jika saya tidak salah itu adalah:
sumber
Inilah cara saya menambahkan string ketika dibutuhkan:
sumber
sumber
Mengapa Anda tidak menggunakan for for alih-alih menggunakan foreach. Dalam skenario ini, tidak ada cara Anda bisa mendapatkan indeks iterasi saat ini dari foreach loop.
Nama file dapat ditambahkan ke string [] dengan cara ini,
sumber
listaDeArchivos
. Jika Anda tidak (yaitu jika itu bisa berubah dan akan rumit untuk melakukan penghitungan sebelumnya karena objek Anda adalah model bersarang atau bidang model yang mungkin / mungkin tidak diisi, misalnya) dan Anda hanya ingin melakukanstring[] Coleccion;
kemudian tetapkan sepertiint idx = 0; Coleccion[idx] = fileName; idx++;
, itu akan memberi tahu AndaUse of unassigned local variable 'Coleccion'
. Hanya FYI bagi siapa pun yang ingin mengadaptasi ini menjadi lebih dinamis, bahwa ada jebakan.Kode ini berfungsi baik untuk menyiapkan nilai dinamis Array untuk pemintal di Android:
sumber
untuk menghapus array dan membuat jumlah elemen itu = 0 pada saat yang sama, gunakan ini ..
sumber
Saya tidak akan menggunakan array dalam hal ini. Sebagai gantinya saya akan menggunakan StringCollection.
sumber
sumber
Menambahkan referensi ke Linq
using System.Linq;
dan menggunakan metode ekstensi yang disediakanAppend
:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)
Maka Anda perlu mengubahnya kembali untukstring[]
menggunakan.ToArray()
metode tersebut.Hal ini dimungkinkan, karena jenis
string[]
alatIEnumerable
, juga mengimplementasikan antarmuka berikut:IEnumerable<char>
,IEnumerable
,IComparable
,IComparable<String>
,IConvertible
,IEquatable<String>
,ICloneable
sumber