2011-07-03 31 views
9

我是C#中的新成員。在C#中,我不能將結構的值設置爲空如何創建一個具有空值支持的結構?如何創建具有空值支持的結構?

+3

你幾乎肯定不應該首先使用結構。 – SLaks

+0

有沒有一個令人信服的理由,這不能被定義爲一個類呢? – juharr

回答

14

結構體和值類型可以由通過使用通用可空<可空>類來包裹。例如:

Nullable<int> num1 = null; 

C#的類型後加上問號爲此提供了一個語言功能:

int? num1 = null; 

同樣要對任何類型的值,包括結構的工作。

MSDN說明:Nullable Types (c#)

3

可以使用Nullable<T>對於結構,或簡寫形式的相同的(?):

表示一個對象,其底層 類型爲值類型也可以是 分配空像引用類型。

struct Foo 
{ 
} 

Nullable<Foo> foo2 = null; 
Foo? foo = null; //equivalent shorthand form 
5

您可以使用Nullable<T>這在C#中的別名。請記住,結構本身並不是真正的null(編譯器在後臺對待不同的null)。它更多是Option type

Struct? value = null; 

作爲@CodeInChaos提到Nullable<T>當它處於非空狀態僅裝箱。

Nullable Types

Boxing Nullable Types

+2

'Nullable '不僅僅是編譯性的。 CLR魔術也支持它。例如,對於真實的null來說,一個「空」的可空框。 – CodesInChaos

2

自「結構」是不是引用類型,則不能將「空」作爲通常的方式。所以你需要使用下面的形式使其「可以爲空」

[結構名稱]? [變量名稱] = null

例如。

Color? color = null; 

然後您可以爲對象分配空值並使用條件語句檢查可空性。

相關問題