c#中的可空类型

时间:2014-02-04 15:50:50

标签: c# java c#-4.0

我是java初学者,我必须将null中的C#值与int? a = null; 中的null进行比较。

我读到java不假设任何东西为null并且总是分配内存但c#相反假设all为null ??? (不明白这是什么意思)

我还读到c#中的普通类型不能为null但是后来我看到了一个代码:

{{1}}

int是普通类型吗?

我真的很困惑,任何人都可以帮助我吗?

提前致谢

3 个答案:

答案 0 :(得分:3)

int是一个原始结构,是的。 然而,

int?

的语法糖
Nullable<int>

这是一种完全不同的类型。

请参阅:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

答案 1 :(得分:1)

看看this MSDN article

  

Nullable类型是System.Nullable结构的实例。可空类型可以表示其基础值类型的正确值范围,以及额外的空值。

class NullableExample
{
    static void Main()
    {
        int? num = null;

        // Is the HasValue property true? 
        if (num.HasValue)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero 
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false 
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

答案 2 :(得分:0)

null在C#和Java中非常相似。 C#的struct不能为空,但Nullable<T>(它本身是struct除外,但是通过某些编译器魔术可以伪装成null值。 Java的原语不能为空。

int?Nullable<int>的简写。有关详细信息,请参阅Nullable Types