程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中,為什麼在值類型後面加問號

C#中,為什麼在值類型後面加問號

編輯:C#入門知識

在C#中,聲明一個值類型或引用類型的變量,無論是否給這個變量賦初值,該變量都有默認值:

比如聲明引用類型變量: string a,其等效於string a = null,string的默認值為null。
比如聲明值類型變量:int a, 其等效於int a = 0,int的默認值為0。

 

  為什麼需要讓值類型可以為null?

來看需要讓值類型為null的場景:

 

在數據庫中,通常值類型允許為null,比如int, decimal, DateTime類型允許為null,而如果C#中對應的值類型不能為null,在保存數據到數據庫的時候就會造成數據類型的不一致。

 

又比如,在搜索的場景中,服務端聲明一個變量,用來接收來自客戶端的、某個字段的值,如果C#中不允許這個變量為null,但從客戶端傳來的字段值有可能為null(沒有選擇某個搜索條件),這樣也造成了前後端數據類型的不一致。

 

為了應對這些場景,C#提供了允許讓值類型為null的語法。

 

  允許值類型為null的寫法

DateTime? date = null; 等效於: Nullable<DateTime> date = null;
int? a = null; 等效於:Nullable<int> a = null;

 

  如何避免因值類型為null而拋出異常?

通過if...else語句

int result;
if(a == null)
{
    result = 0;
}
else
{
    result = (int)a;
}

通過??

int result = a ?? 0;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved