C# オブジェクトの null 可能性チェック
C# では、null を許容するオブジェクトと null を許容しないオブジェクトを区別することが重要です。この記事では、参照型ではなく値型に重点を置き、オブジェクトが null 許容かどうかを判断する方法に焦点を当てます。
実装方法:
次のコード スニペットは、オブジェクトが null 許容値型であるかどうかを確認する 1 つの方法を示しています。
<code class="language-csharp">bool IsNullableValueType(object o) { if (o == null) return true; // 显而易见的情况 Type type = o.GetType(); // 修正此处,使用 o.GetType() 获取对象的实际类型 if (!type.IsValueType) return true; // 引用类型 if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // 值类型 }</code>
コードの説明:
このメソッドは 3 つの状況をチェックします:
Nullable.GetUnderlyingType
メソッドは、o の型が Nullable<T>
型であるかどうかを確認します。 o は、null 以外の型を返す場合、null 許容値型です。 ボックス化されたオブジェクトの処理:
ただし、o がボックス化された値型の場合、このメソッドは失敗する可能性があります。この問題は、ジェネリックスを使用して解決できます。
<code class="language-csharp">static bool IsNullable<T>(T obj) { if (obj == null) return true; // 显而易见的情况 Type type = typeof(T); if (!type.IsValueType) return true; // 引用类型 if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // 值类型 }</code>
この変更されたメソッドは、ジェネリックスを使用することで、渡されたオブジェクトから T の型を推測できます。これは、o がボックス化されている場合でも機能します。
その他のリソース:
C# の null 許容型の詳細については、Microsoft のドキュメントを参照してください: https://www.php.cn/link/55298ec38b13c613ce8ffe0f1d928ed2
以上がC# オブジェクトが Null 許容値型であるかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。