2

変数を生成するコードがありList<string[]>ますが、テキストボックスに正しく表示する方法がわかりません。

List<string[]> test = parseCSV();
for (int i = 0;  i < test.Count; i++)
{
  Console.WriteLine("i = {0}",i);
  Console.WriteLine("test[i] = {0}", test[i]);
  nameList.Text = test[i].ToString() + "\n" + nameList.Text;
}

コンソールに出力test[i]すると文字列情報が正しく表示されますがtest[i]、テキストボックスに出力すると次のようになります。

System.String[]
System.String[]
System.String[]
System.String[]
System.String[]
System.String[]

誰かが私が間違っていることを教えてもらえますか?

4

4 に答える 4

5

これは、さまざまな状況ToStringで現れる一般的な誤解です。プリミティブ型が「期待どおりに」機能しているように見えても、これは魔法のフォーマットウィザードではありません。ToStringは、手元にあるデータの合理的な表現を提供するだけです。

配列データの場合、.NetがすべてのToString呼び出し(デバッガーが頻繁に使用する)に対して配列全体を出力することは不快であり、おそらく正しくありません。60x60x10の文字列の3D配列を想像してみてください。デバッガーの配列の上にマウスを置いたからといって、レンダリングされるのを待つ必要はありません。

この場合、次を使用できますString.Join

for (int i = 0;  i < test.Count; i++)
{
    Console.WriteLine("i = {0}",i);
    Console.WriteLine("test[i] = {0}", test[i]);
    nameList.Text = String.Join(", ", test[i]) + "\n" + nameList.Text;
}
于 2012-07-02T16:44:18.637 に答える
4

test[i]文字列配列です。配列はオーバーライドしないため、オブジェクトのタイプ(この場合)ToString()を示すデフォルトの実装を取得するだけです。System.String[]

あなたがそれで何をしたいのかは明確ではありません。たとえば、次のように使用できます。

Console.WriteLine("test[i] = {0}", string.Join(", ", test[i]));

...配列内のすべての文字列からコンマ区切りの文字列を作成します。

編集:これに注意してください:

Console.WriteLine("test[i] = {0}", test[i]);

実際には、各文字列配列から最初の文字列を出力しています。をに変換するために配列共分散を使用しstring[]ていobject[]ます。同じ操作をより明確に実行するには、次を使用します。

Console.WriteLine("test[i] = {0}", test[i][0]);

したがって、各配列からテキストボックスに最初の値を取得するだけの場合は、次を使用できます

nameList.Text = test[i][0] + "\r\n" + nameList.Text;

(これにより、「行」の順序が事実上逆になることに注意してください。)Windowsの改行にテキストボックスが使用するものに変更\nしました。)\r\n

于 2012-07-02T16:44:29.083 に答える
1

リストに文字列の配列を格納しています。正しいコードは次のようになります。

foreach (string[] items in test)
   foreach (string item in items)
   {
       ...
   }

これは、リスト内のすべての配列を反復し、次に現在の配列内のすべての項目を反復します。

于 2012-07-02T16:45:14.720 に答える
0

テスト[i].ToString()でToString()メソッドを使用しています。このテスト[i]のように使用してください

参考までに Object.ToString() 現在のオブジェクトを表す文字列を返します。

したがって、あなたは得る

System.String[]
System.String[]
System.String[]
System.String[]
System.String[]
System.String[]
于 2012-07-02T16:47:33.627 に答える