'is'运算符不能应用于静态类型的操作数

Ani*_*esh 3 c# nullable

在这种情况下,这个错误意味着什么?

if (value == null)
    return "";

if (value is Nullable && ((INullable)value).IsNull) //error on this line
    return "";

if (value is DateTime)
{
    if (((DateTime)value).TimeOfDay.TotalSeconds == 0)
        return ((DateTime)value).ToString ("yyyy-MM-dd");
    return ((DateTime)value).ToString ("yyyy-MM-dd HH:mm:ss");
}
Run Code Online (Sandbox Code Playgroud)

我搜索但没有得到任何关于此错误的信息.我在Mono(2.10.8.1)上尝试这个.这是一个实际用于Windows的项目,但是当我尝试在Monodevelop中编译它时,我收到了这个错误.

Jon*_*eet 7

问题出在这里:

if (value is Nullable
Run Code Online (Sandbox Code Playgroud)

它认为你在谈论静态类System.Nullable而不是System.Nullable<T>结构.

也许你的意思是:

if (value is INullable ...)
Run Code Online (Sandbox Code Playgroud)

?

请注意,如果value是编译时类型object,则它永远不会是a Nullable<T>,因为装箱空值会给出空引用,而装箱非空值会给出基础类型的装箱值.

如果您认为还有其他事情需要实现,请说明您要做的事情.