[解決済み] C#でジェネリックメソッドからNULLを返すにはどうしたらいいですか?
2022-03-16 06:32:35
質問
私はこの(ダミーの)コードでジェネリックメソッドを持っています(はい、私はIListが述語を持っていることを知っています、しかし私のコードはIListではなく他のコレクションを使っています、とにかくこれは質問には関係ありません...)
static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
foreach T thing in collecion
{
if (thing.Id == id)
return thing;
}
return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead.
}
これはビルドエラーになります
nullを型パラメータに変換できません。 'T' は値型である可能性があるためです。 代わりに 'default(T)' を使用することを検討してください。
このエラーを回避することはできますか?
解決方法は?
2つの選択肢があります。
-
戻る
default(T)
を返すということです。null
が参照型(または null 可能な値型)である場合。0
に対してint
,'\0'
についてchar
などなど( 既定値表(C#参考) ) -
でTが参照型であることを制限します。
where T : class
という制約を設け、その上でnull
通常通り
関連
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] Javaで汎用配列を作成する方法は?
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】Nullable型をジェネリックパラメータにすることは可能か?
-
[解決済み】C#のジェネリック引数のNullまたはデフォルト比較
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで