ホームページ > バックエンド開発 > C++ > C# の値型が Null 可能かどうかを確認するにはどうすればよいですか?

C# の値型が Null 可能かどうかを確認するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-13 11:58:42
オリジナル
458 人が閲覧しました

How Can I Determine if a Value Type in C# is Nullable?

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>
ログイン後にコピー

このメソッドはオブジェクトのタイプを評価します:

  • オブジェクトが null の場合、そのオブジェクトは null 可能とみなされます。
  • オブジェクトが (値型ではなく) 参照型である場合も、そのオブジェクトは null 許容です。
  • オブジェクトの基になる型が null 可能である場合 (Nullable.GetUnderlyingType によって決定される)、そのオブジェクトは null 可能です。
  • それ以外の場合は、null 非許容値型になります。

あなたの例では、 bc.myBool は null 非許容の bool 値を参照しており、 objNullable<bool> のインスタンスにはなりません。この状況に対処するには、 IsNullableValueType(bc.myBool)true と評価される場合にのみ、 obj の周囲に null 許容ラッパーを作成します。

コード改善手順: Type type = typeof(T); が定義されていないため、元のコードの T にエラーがあります。 これをオブジェクトの実行時の型で判定するType type = o.GetType();に修正しました。

以上がC# の値型が Null 可能かどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート