null 許容値の型をチェックします
オブジェクトの null 可能性の決定は、値の型を扱うときによくある問題です。 Null 許容値型をチェックするときは、Null 許容値型と Null 許容参照型を区別する必要があります。この場合、暗黙的に null 値を含む可能性のある値の型を識別する必要があります。これを実現する方法は次のとおりです:
<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>
このメソッドはオブジェクトのタイプを評価します:
Nullable.GetUnderlyingType
によって決定される)、そのオブジェクトは null 可能です。 あなたの例では、 bc.myBool
は null 非許容の bool
値を参照しており、 obj
は Nullable<bool>
のインスタンスにはなりません。この状況に対処するには、 IsNullableValueType(bc.myBool)
が true
と評価される場合にのみ、 obj
の周囲に null 許容ラッパーを作成します。
コード改善手順: Type type = typeof(T);
が定義されていないため、元のコードの T
にエラーがあります。 これをオブジェクトの実行時の型で判定するType type = o.GetType();
に修正しました。
以上がC# の値型が Null 可能かどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。