C# のジェネリック メソッドで null 値を返す
ジェネリック メソッドを作成する場合、開発者はジェネリック型パラメータを持つメソッドから null 値を返すという問題に遭遇する可能性があります。提供されたコード スニペット内:
<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach (T thing in collection) { if (thing.Id == id) return thing; } return null; // 错误:无法将 null 转换为类型参数 'T' }</code>
コンパイラは、「値型である可能性があるため、null を型パラメータ 'T' に変換できません。代わりに 'default(T)' の使用を検討してください。」というエラーを生成します。これは、値型 (構造体) を含むジェネリック型に対して直接 null を返すことができないためです。
エラーの解決
この問題を解決するには、開発者には 3 つのオプションがあります:
デフォルト値を返す: default
または default(T)
キーワードを使用して、型 T のデフォルト値を返します。これは、参照型の場合は null、整数の場合は 0、文字の場合は ' を返します。 'など
ジェネリック型の制限: メソッドが参照型のみを返すように制限できる場合は、where T : class
制約を追加できます。これにより、null を直接返すことができます。
null 値を null 許容値として返す: メソッドが null 以外の値の型のみを返すように制限できる場合は、where T : struct
制約を使用できます。この場合、null を null 許容値型の null 値として返すことができます。
以上がC# でジェネリック メソッドから返される Null を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。