web-dev-qa-db-ja.com

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を文字列に変換してから、それを私の配列に追加したいです。これどうやってするの?

196
Sergio Tapia

長さが固定されているため、配列に項目を追加することはできません。探しているのはList<string>で、後でlist.ToArray()を使用して配列に変換できます。

352
Saulius Valatka

あるいは、配列のサイズを変更できます。

Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = "new string";
98
Siebe Tolsma

System.Collections.GenericからList <T>を使用

List<string> myCollection = new List<string>();

…

myCollection.Add(aString);

本当に最後に配列が欲しいのなら、

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;
}
55
Adam Wright

イージー

// 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();
26
NoloMokgosi

私が誤解していなければそれはそれです:

MyArray.SetValue(ArrayElement, PositionInArray)
10
Stefan Nicolov

これは私が必要に応じて文字列に追加する方法です:

string[] myList;
myList = new string[100];
for (int i = 0; i < 100; i++)
{
    myList[i] = string.Format("List string : {0}", i);
}
5
kittugadu
string[] coleccion = Directory.GetFiles(inputPath)
    .Select(x => new FileInfo(x).Name)
    .ToArray();
3
xcud

Foreachを使う代わりにforループを使わないでください。このシナリオでは、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;
}
3
Sarath Rachuri

このコードは、Androidのスピナー用に動的な値の配列を準備するのに最適です。

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


    String[] yearStringArray = (String[]) yearStringList.toArray(new String[yearStringList.size()]);
1
Taras Vovkovych

Linq using System.Linq;への参照を追加し、提供されている拡張メソッドAppendを使用します:public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element)次に、.ToArray()メソッドを使用して、string[]に変換し直す必要があります。

タイプstring[]IEnumerableを実装するため、次のインターフェースも実装します。IEnumerable<char>IEnumerableIComparableIComparable<String>IConvertibleIEquatable<String>ICloneable

using System.Linq;
public string[] descriptionSet new string[] {"yay"};
descriptionSet = descriptionSet.Append("hooray!").ToArray();  
0
proximab

この場合は配列を使用しません。代わりに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
user175116
string[] MyArray = new string[] { "A", "B" };
MyArray = new List<string>(MyArray) { "C" }.ToArray();
//MyArray = ["A", "B", "C"]
0

配列をクリアし、同時にその要素の数を0にするには、これを使います。

System.Array.Resize(ref arrayName, 0);
0
DeyaEldeen