[解決済み] FirstOrDefault<KeyValuePair>が値を返したことを確認するにはどうすればよいですか?
2022-12-05 05:05:43
質問
私がやろうとしていることの簡略版は以下の通りです。
var days = new Dictionary<int, string>();
days.Add(1, "Monday");
days.Add(2, "Tuesday");
...
days.Add(7, "Sunday");
var sampleText = "My favorite day of the week is 'xyz'";
var day = days.FirstOrDefault(x => sampleText.Contains(x.Value));
xyz'は辞書に存在しないので、FirstOrDefaultメソッドは有効な値を返しません。この状況をチェックできるようにしたいのですが、KeyValuePair は struc なので、結果を "null" と比較することができないことに気づきました。以下のコードは無効です。
if (day == null) {
System.Diagnotics.Debug.Write("Couldn't find day of week");
}
このコードをコンパイルしようとすると、Visual Studioは次のようなエラーを投げます。
Operator '==' cannot be applied to operands of type 'System.Collections.Generic.KeyValuePair<int,string>' and '<null>'
FirstOrDefaultが有効な値を返したかどうかを確認するにはどうしたらよいですか?
どのように解決するのですか?
FirstOrDefault
はnullを返さず
default(T)
.
を確認する必要があります。
var defaultDay = default(KeyValuePair<int, string>);
bool b = day.Equals(defaultDay);
から
MSDN
Enumerable.FirstOrDefault<TSource>
:
デフォルト( TSource ) の最初の要素を使用します。 ソース .
注意事項
-
一般的なコードであれば
EqualityComparer<T>.Default.Equals(day, defaultDay)
というのは.Equals
はオーバーライドされるかday
はnull
. -
C# 7.1では、以下のように
KeyValuePair<int, string> defaultDay = default;
を参照してください。 ターゲット型 "default"リテラル . -
こちらもご覧ください。
参照元
FirstOrDefault
関連
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み] 数字しか入力できないテキストボックスの作り方を教えてください。
-
[解決済み] 現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?
最新
-
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#
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] C#で演算子==はジェネリック型に適用できない?