[解決済み] List<string> が空かヌルかチェックする。
2023-05-01 03:24:05
質問
リストがありますが、時々、空やNULLになります。リストにアイテムが含まれているかどうかを確認し、含まれていない場合はリストにオブジェクトを追加できるようにしたいです。
// I have a list, sometimes it doesn't have any data added to it
var myList = new List<object>();
// Expression is always false
if (myList == null)
Console.WriteLine("List is never null");
if (myList[0] == null)
myList.Add("new item");
//Errors encountered: Index was out of range. Must be non-negative and less than the size of the collection.
// Inner Exception says "null"
どのように解決するのですか?
以下のコードを試してみてください。
if ( (myList!= null) && (!myList.Any()) )
{
// Add new item
myList.Add("new item");
}
これらのチェックのために、私は今、次の解決策を使いたいので、遅いEDITです。 まず、Safe()と呼ばれる小さな再利用可能な拡張メソッドを追加します。
public static class IEnumerableExtension
{
public static IEnumerable<T> Safe<T>(this IEnumerable<T> source)
{
if (source == null)
{
yield break;
}
foreach (var item in source)
{
yield return item;
}
}
}
といった具合にします。
if (!myList.Safe().Any())
{
// Add new item
myList.Add("new item");
}
個人的にはこの方が冗長でなく、読みやすいと思います。これで、NULLチェックをすることなく、安全にどんなコレクションにもアクセスできるようになりました。
そしてもう一つのEDITは、拡張メソッドを必要とせず、?(Null-conditional)演算子を使用します(C# 6.0)。
if (!(myList?.Any() ?? false))
{
// Add new item
myList.Add("new item");
}
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#で四捨五入する方法
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] 2つのリストを結合する
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み] .Any() vs .Count() > 0のどちらのメソッドがより良いパフォーマンスを発揮しますか?