我是java
初学者,我必须将null
中的C#
值与int? a = null;
中的null进行比较。
我读到java不假设任何东西为null并且总是分配内存但c#相反假设all为null ??? (不明白这是什么意思)
我还读到c#中的普通类型不能为null但是后来我看到了一个代码:
{{1}}
int是普通类型吗?
我真的很困惑,任何人都可以帮助我吗?
提前致谢
答案 0 :(得分:3)
int是一个原始结构,是的。 然而,
int?
是
的语法糖Nullable<int>
这是一种完全不同的类型。
答案 1 :(得分:1)
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。