[解決済み】IEnumerable<T>コレクションにアイテムを追加するにはどうすればよいですか?
2022-03-24 01:02:04
質問
上記のタイトルで質問です。例えば
IEnumerable<T> items = new T[]{new T("msg")};
items.ToList().Add(new T("msg2"));
が、結局中に入っているのは1項目だけ。のようなメソッドを用意することはできますか?
items.Add(item)
のように
List<T>
?
解決方法は?
できません。
IEnumerable<T>
は、必ずしもアイテムを追加できるコレクションを表しているわけではありません。実際、コレクションを表すとは限らないのです。例えば
IEnumerable<string> ReadLines()
{
string s;
do
{
s = Console.ReadLine();
yield return s;
} while (!string.IsNullOrEmpty(s));
}
IEnumerable<string> lines = ReadLines();
lines.Add("foo") // so what is this supposed to do??
ただし、できることは
新しい
IEnumerable
オブジェクト (型は不定) を作成し、それを列挙すると、古いオブジェクトのすべての項目と、独自の項目のいくつかを提供することになります。このオブジェクトは
Enumerable.Concat
を使用します。
items = items.Concat(new[] { "foo" });
これは は配列オブジェクトを変更しません。 (いずれにせよ、配列に項目を挿入することはできません)。しかし、配列のすべての項目をリストアップする新しいオブジェクトを作成し、次に "Foo"を作成することになります。さらに、その新しいオブジェクトは 配列の変更を追跡する (つまり、列挙するたびに、項目の現在の値が表示されます)。
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] LINQのGroup by
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み】Nullableオブジェクトは値を持たなければならない?