c# – 为什么有Nullable结构和Nullable类?

有一个Nullable< T>. struct还有另一个带有三个静态方法的静态Nullable类.

我的问题是,为什么静态Nullable类中的这些静态方法不能进入Nullable< T>结构?在两种不同类型中定义它们的原因是什么?

并且还有一个INullable接口.它做什么?

解决方法:

> Generics的标准做法是使用与泛型类相同的实用程序方法,使用与泛型类相同的类.因为当你使用泛型类时,你不能在类型声明中推断出泛型,你最终会得到更多的字符.
看看静态方法放在泛型类中会是怎样的:

Nullable<int?>.Compare(x, Y);
var n = new Tuple<int,string>(10, "Text");

VS

Nullable.Compare(x, Y);
var n = Tuple.Create(10, "Text");

我把Tuple作为另一个例子.
>接口和基类在泛型中非常有用,并且因为Nullable<>是struct和structs不能有基类,我们留下了接口.现在可以使用它.

{
    int? a = 10;
    long? b = 10L;

    Process(a);
    Process(b);
}

private static void Process(INullable value)
{
    if (value.IsNull)
    {
        // Process for null .. 
    }
    else
    {
        // Process for value .. 
    }
}
上一篇:Java并发编程:synchronized和锁优化


下一篇:在C#中进行适当的可空类型检查?