淺談C# 中的可空值類(lèi)型 null
C# 不允許把 null 賦給一個(gè)值類(lèi)型的數(shù)據(jù)。在 C# 中,以下語(yǔ)句是非法的:
int a = null; // 非法
但是,利用 C# 定義的一個(gè)修飾符,可將一個(gè)變量聲明為一個(gè)可空(nullable)值類(lèi)型??煽罩殿?lèi)型在行為上與普通值類(lèi)型相似,但可以將一個(gè) null 值賦給它。如下所示:
int? a = null; // 合法
當(dāng)把一個(gè)變量定義為可空值類(lèi)型時(shí),該變量依然可以被賦值為 0,代碼如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 可空類(lèi)型
{
class Program
{
static void Main(string[] args)
{
int? a = null;
Console.WriteLine("a = {0}", a);
a = 0;
Console.WriteLine("a = {0}", a);
}
}
}
運(yùn)行結(jié)果為:

可空類(lèi)型有如下屬性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int? i = null;
if (!i.HasValue) // 若 i 包含一個(gè)真正的值,則 i.HasValue 為true
{
i = 99;
}
Console.WriteLine(i.Value); // i 的值
}
}
}
// i.HasValue 比 i != null 走了不少冤枉路,i.Value 也比 i 更麻煩
// 但是當(dāng)使用更加復(fù)雜的值類(lèi)型(struct)來(lái)聲明可空類(lèi)型時(shí), .HasValue 和 .Value 就有了優(yōu)勢(shì)
相關(guān)文章
C#/VB.NET 在PDF中添加文件包(Portfolio)的方法
這篇文章主要介紹了C#/VB.NET 在PDF中添加文件包(Portfolio)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-06-06
C#實(shí)現(xiàn)繪制鼠標(biāo)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)繪制鼠標(biāo)的效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的方法
下面小編就為大家?guī)?lái)一篇c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
C#編寫(xiě)的藝術(shù)字類(lèi)實(shí)例代碼
本文給大家分享使用純C#編寫(xiě)的藝術(shù)字類(lèi)實(shí)例代碼,代碼簡(jiǎn)單易懂,需要的朋友參考下本教程2016-03-03
利用C#實(shí)現(xiàn)AOP常見(jiàn)的幾種方法詳解
AOP面向切面編程(Aspect Oriented Programming),是通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。下面這篇文章主要給大家介紹了關(guān)于利用C#實(shí)現(xiàn)AOP常見(jiàn)的幾種方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09

