C# 可为空?检测它们

C# 可为空?检测它们,c#,.net,reflection,.net-2.0,nullable,C#,.net,Reflection,.net 2.0,Nullable,好的,我对使用可空类型还是有点陌生 我正在为我的一个项目编写一个反射对象漫游器,我正在使用从反射属性中检索到的值设置反射属性的值 我检索到的值仍然是object形式,我突然明白了这一点,因为我希望我的object walker在找不到某些内容时返回null(我曾想过抛出一个异常,但我希望在出现问题时软失败) 无论如何,im设置/获取的一些值是decimalbool等。。。所以我突然意识到我不应该设置一个不可为空的值,但我意识到我不知道如何从decimal? 如果属性im设置的类型是从ValueT

好的,我对使用可空类型还是有点陌生

我正在为我的一个项目编写一个反射对象漫游器,我正在使用从反射属性中检索到的值设置反射属性的值

我检索到的值仍然是
object
形式,我突然明白了这一点,因为我希望我的object walker在找不到某些内容时返回null(我曾想过抛出一个异常,但我希望在出现问题时软失败)

无论如何,im设置/获取的一些值是
decimal
bool
等。。。所以我突然意识到我不应该设置一个不可为空的值,但我意识到我不知道如何从
decimal?


如果属性im设置的类型是从
ValueType
继承的,则只需键入即可。

以下代码将告诉您类型是否可为空:

private bool IsNullableType(Type theType)
{
    return theType.IsGenericType && 
           theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>));
}
private bool IsNullableType(键入类型)
{
返回type.IsGenericType&&
GetGenericTypeDefinition()等于(typeof(null));
}

以下代码将告诉您类型是否可为空:

private bool IsNullableType(Type theType)
{
    return theType.IsGenericType && 
           theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>));
}
private bool IsNullableType(键入类型)
{
返回type.IsGenericType&&
GetGenericTypeDefinition()等于(typeof(null));
}
来自:

可空类型是
System.Nullable
struct的实例

发件人:

可空类型是
System.Nullable
struct的实例


我不太清楚你在问什么,但你应该知道
对象
永远不会是
int?
十进制?
。如果你的
null
没有值,它将是
null
。我不太清楚你在问什么,但你应该知道
对象
永远不会是
int?
十进制?
。如果您的
可空
没有值,则它将仅为
。改为“
返回可空。GetUnderlyingType(theType)!=null;
”如何?改为“
返回null.getUnderlineType(theType)!=null;
”怎么样?