0

私は明らかにこれで何かが欠けています。私は次のものを持っています:

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

次に、いくつかのデータを入力して、次のことを行います。

   foreach (List<string> results in stringList)

stringしかし、「タイプからタイプに変換できない」と主張してエラーが発生しSystem.Generic.Collections.List<string>ます...しかし、どちらもタイプList<string>なので、切断はどこにありますか? 明らかに間違っている非常に単純な何かがあるに違いないと確信していますが、私の人生ではそれを見つけることができません。

4

5 に答える 5

11

あなたのforeachはずです:

foreach(string s in stringList).

あなたのコードでは、リスト内の文字列ではstringListなく、 内の文字列のリストをチェックしています。

于 2012-12-05T21:16:26.640 に答える
3

for-each 反復では一度に 1 つずつアイテムが得られるため、タイプはstringではなくである必要がありList<string>ます。

foreach (string result in stringList)
于 2012-12-05T21:16:38.027 に答える
3

C# でループを使用するforeachと、コレクション型を反復処理し、そのコレクションの単一の値を使用して操作を繰り返し実行します。したがって、ジェネリック コレクション タイプの場合は、foreachループ内に個々の項目タイプが必要です。

List<string> stringList = new List<string>();
foreach (string stringItem in stringList)
{
    // do something
}
于 2012-12-05T21:16:57.683 に答える
3

リストをforeach上書きすると、リスト内の要素が列挙されます。 stringList文字列が含まれているため、次のことを行う必要があります。

foreach (string s in stringList)
于 2012-12-05T21:17:12.240 に答える
3

stringList はタイプList<string>です。

つまり、リスト stringList のすべての要素がstring. したがって、 a を実行するforeach (element in stringList)と、要素は であることが期待されますstring

問題を解決するための最も推奨される方法はList<string>、 foreach の内部を に置き換えることですvar。ステートメントで常に を使用するvarforeach、正しい型 (この場合はstringの代わりList<string>) が自動的に考慮されるため、要素がどの型であるかを調べる必要はありません。

于 2012-12-05T21:20:45.297 に答える