int n == 0;
if (n == null)
{
Console.WriteLine("......");
}
表达式(n == null
)的结果始终是false
,因为是的
类型int
的值绝不等于null
类型的 int?
(请参阅下面的警告)
警告CS0472 表达式的结果始终为“false”,因为类型“int”的值永远不会等于“int”类型的“null”
答案 0 :(得分:72)
如果您希望整数变量允许空值,请将其声明为nullable type:
int? n = 0;
注意int之后的?
,这意味着类型可以具有值null
。可嵌套类型是在.NET Framework v2.0中引入的。
答案 1 :(得分:15)
在C#中,不允许使用未初始化的变量。
所以
int i;
Console.Writeline(i);
导致编译错误。
您可以使用以下内容初始化int,例如:
int anInt = new int();
这将导致int的Default value为0.如果您希望拥有泛型int
,则可以使用语法
int? nullableInt = null;
答案 2 :(得分:5)
因为int
是值类型而不是引用类型。 C#语言规范不允许int
包含null。尝试编译此声明:
int x = null ;
看看你得到了什么。
您收到编译器警告,因为它是一个毫无意义的测试,编译器知道它。
答案 3 :(得分:3)
.NET中的“值类型”(如int,double和bool)根据定义不能为空 - 它们始终具有指定的实际值。查看this good intro以评估类型与参考类型。
答案 4 :(得分:2)
NULL的使用通常适用于指针和引用。分配给整数的值0不为空。但是,如果您可以指定一个指向整数的指针并将其指定为NULL,则该语句有效。
总结=>
/*Use the keyword 'null' while assigning it to pointers and references. Use 0 for integers.*/
答案 5 :(得分:2)
非常简单地说,int是一个非常基本的项目。它小而简单,因此可以快速处理。它直接作为值处理,而不是沿对象/指针模型处理。因此,它没有合法的“NULL”值。它只包含它包含的内容。 0表示0.与指针不同,0表示为NULL。存储0的对象仍然具有非零指针。
如果你有机会,花点时间做一些老式的C或装配工作,它会变得更加清晰。
答案 6 :(得分:1)
不,因为int
是值类型。 int
是Value
类型,例如Date
,double
等。因此无法分配null
值。
答案 7 :(得分:1)
public static int? n { get; set; } = null;
OR
public static Nullable<int> n { get; set; }
或
public static int? n = null;
或
public static int? n
或者只是
public static int? n { get; set; }
static void Main(string[] args)
{
Console.WriteLine(n == null);
//you also can check using
Console.WriteLine(n.HasValue);
Console.ReadKey();
}
null关键字是一种表示空引用的文字,它不引用任何对象。 在编程中,可为空的类型是某些编程语言的类型系统的功能,它允许将值设置为特殊值NULL,而不是数据类型的常见可能值。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/null https://en.wikipedia.org/wiki/Null