1. ホーム
  2. c#

[解決済み】型がNullableかどうかを確認する正しい方法【重複あり

2022-04-07 01:54:58

質問

<余談
この質問には、すでにここで回答があります :
クローズド 8年前 .

を確認するために、「1. Type ( propertyType ) が null 可能であることを利用しています。

bool isNullable =  "Nullable`1".Equals(propertyType.Name)

マジックストリングを使用しない方法はありますか?

どのように解決するのですか?

もちろん - 使用 Nullable.GetUnderlyingType :

if (Nullable.GetUnderlyingType(propertyType) != null)
{
    // It's nullable
}

これは、非ジェネリックな静的クラスである System.Nullable ではなく、汎用的な構造体である Nullable<T> .

を表しているかどうかをチェックすることにも注意してください。 具体的 (閉じた)NULL可能な値型...で使用するとうまくいきません。 ジェネリック

public class Foo<T> where T : struct
{
    public Nullable<T> Bar { get; set; }
}

Type propertyType = typeof(Foo<>).GetProperty("Bar").PropertyType;
// propertyType is an *open* type...