C# 可空类型

默认情况下,所有值类型都是不可为空的,而引用类型则被称为 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");
    }
  }
 }
C# Nullable Types
分类 C#