Home [C# 筆記] Nullable 類別
Post
Cancel

[C# 筆記] Nullable 類別

資料型別 - enum、struct、Nullable

  • 列舉(enum)與結構(struct)可以提高程式可讀性。
  • Nullable類別的宣告讓實值變數可以存放null值。

Nullable 類別

  • Nullable 類別其功能是用來支援「實值型別」存放null值。
  • 所以Nullable 類別的作用就是「讓實值型別變數可以存放虛值」。
  • Nullable結構只支援使用「實值型別」來做為可null的型別。
  • 因為「參考型別」原本就支援存放null值,並不需要特別去宣告為Nullable

只要在型別後面加上「問號(?)」就可以存放null值。

1
2
short? score1;
int? score2;

範例

以下程式,Score未宣告成 Nullable,所以無法存放null值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public struct Student
{
    public string ID;
    public string Name;
    public int Score;
}
internal class Program
{
    static void Main(string[] args)
    {
        Student[] stu = new Student[2];
        stu[0].ID = "S001";
        stu[0].Name = "Rii";
        stu[0].Score = null; //報錯,因為Score未宣告成Nullable,所以不能存放null值
    }
}

只要在型別後面加上一個「問號?」就變成可存放null的資料型別。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public struct Student
{
    public string ID;
    public string Name;
    public int? Score;
}
internal class Program
{
    static void Main(string[] args)
    {
        Student[] stu = new Student[2];
        stu[0].ID = "S001";
        stu[0].Name = "Rii";
        stu[0].Score = null;

        stu[1].ID = "S002";
        stu[1].Name = "Riva..";
        stu[1].Score = 99;
    }
}

為什麼變數需要存放 null 值?

因為在實務上我們常用null來表示「未知的值」。
例如:學生也許因為有事缺考,所以成績分數需要用null來代表,而暫時不存入任何成績分數。

[C# 筆記] ?: 運算子 by R
Book: Visual C# 2005 建構資訊系統實戰經典教本

This post is licensed under CC BY 4.0 by the author.