默认情况下,所有值类型都是不可为空的,而引用类型则被称为 C# 可空类型。值类型的默认值是某种形式的 0。在我们之前的文章中,我们已经讨论了数据类型的类别,即值类型和引用类型。
例如,任何整数类型变量的默认值都是 0,并且它们不能持有可空值。
using System;
class Class1
{
string str = null; // Valid statement
int i = null; //Not Valid
}
int i= null 是无效的,因为整数是值类型之一,而所有值类型都是不可为空的。
注意:值类型可以使用 ? 使其变为可空类型。
C# 可空类型的语法
int? i = null; // valid statement
该语言引入了可空类型的概念,以解决在数据库中存储某些特定数据时的问题。例如,
bool AreYouMajor = null; // 无效语句
Bool 是一种数据类型,可以接受 true 或 false。但这里有一种情况,如果用户没有回答问题,数据库中应该存储一个 null 值。
您是成年人吗
在这种情况下,关于应该在数据库中存储什么数据就会产生混淆。如果我们存储 false,即“否”,我们就无法区分是他们回答了“否”还是没有回答。为了避免这种混淆,可以将布尔变量 “AreYouMajor” 设为可空类型。
即,bool? AreYouMajor = null; // 有效语句
using System;
class Class
{
static void Main()
{
bool? AreYouMajor = null;
if (AreYouMajor == true)
{
Console.WriteLine("User is major");
}
else if (AreYouMajor == false)
{
Console.WriteLine("User is not a major");
}
else
{
Console.WriteLine("User did not answered the question");
}
}
}
