[解決済み] 空のIEnumerableを返すにはどうしたらいいですか?
2022-03-15 21:07:05
質問
次のコードと与えられたサジェスチョンがあるとします。 この質問で IEnumarableに値があればそれを返し、なければ値のないIEnumerableを返すという、このオリジナルのメソッドを修正することにしました。
以下はそのメソッドです。
public IEnumerable<Friend> FindFriends()
{
//Many thanks to Rex-M for his help with this one.
//https://stackoverflow.com/users/67/rex-m
return doc.Descendants("user").Select(user => new Friend
{
ID = user.Element("id").Value,
Name = user.Element("name").Value,
URL = user.Element("url").Value,
Photo = user.Element("photo").Value
});
}
すべてがreturn文の中にあるので、どうすればいいのかわかりません。このようなことは可能でしょうか?
public IEnumerable<Friend> FindFriends()
{
//Many thanks to Rex-M for his help with this one.
//https://stackoverflow.com/users/67/rex-m
if (userExists)
{
return doc.Descendants("user").Select(user => new Friend
{
ID = user.Element("id").Value,
Name = user.Element("name").Value,
URL = user.Element("url").Value,
Photo = user.Element("photo").Value
});
}
else
{
return new IEnumerable<Friend>();
}
}
上記の方法はうまくいきませんし、実際うまくいくはずもないのですが、ただ私の意図を説明しているように感じます。 抽象クラスのインスタンスを作成できないので、このコードが動作しないことを明記したほうがいいような気がします。
これは呼び出し側のコードですが、いつでもnull IEnumerableを受け取れるようにしたいのです。
private void SetUserFriends(IEnumerable<Friend> list)
{
int x = 40;
int y = 3;
foreach (Friend friend in list)
{
FriendControl control = new FriendControl();
control.ID = friend.ID;
control.URL = friend.URL;
control.SetID(friend.ID);
control.SetName(friend.Name);
control.SetImage(friend.Photo);
control.Location = new Point(x, y);
panel2.Controls.Add(control);
y = y + control.Height + 4;
}
}
お忙しい中、ありがとうございました。
解決方法は?
を使用することができます。
list ?? Enumerable.Empty<Friend>()
または
FindFriends
戻る
Enumerable.Empty<Friend>()
関連
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] IEnumerable<T> と IQueryable<T> を比較する。
-
[解決済み] IList<string> または IEnumerable<string> からカンマ区切りリストを作成する。
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み] IEnumerable<T> / IQueryable<T>の動的なLINQ OrderBy
-
[解決済み】IEnumerable<T>コレクションにアイテムを追加するにはどうすればよいですか?
-
[解決済み】yield returnを使ったIEnumerableとRecursionについて
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] C#で「yield break;」は何をするのか?