1. ホーム
  2. c#

[解決済み] System.TypeをNullableに変換するにはどうしたらいいですか?

2023-07-22 05:20:16

質問

またしても質問です: 「ヘルパーメソッドではなく、もっと簡単なビルトインの方法はありませんか?

nullable型から基礎となる型を取得するのは簡単ですが、.NET型のnullableバージョンはどのように取得すればよいのでしょうか?

そこで私は

typeof(int)
typeof(DateTime)
System.Type t = something;

そして、私は

int? 
DateTime?

または

Nullable<int> (which is the same)
if (t is primitive) then Nullable<T> else just T

組み込みのメソッドはありますか?

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

私が使っているコードはこちらです。

Type GetNullableType(Type type) {
    // Use Nullable.GetUnderlyingType() to remove the Nullable<T> wrapper if type is already nullable.
    type = Nullable.GetUnderlyingType(type) ?? type; // avoid type becoming null
    if (type.IsValueType)
        return typeof(Nullable<>).MakeGenericType(type);
    else
        return type;
}