2010-11-10 39 views

回答

36

使用nullable types

List<int, SomeStruct?> 

您不能分配null到列表中,因爲結構是值類型的元素,而null意味着一個空指針,所以只能分配給引用類型變量。

另請注意,List正如您使用它在.NET中不存在!也許你想要Dictionary

+0

當我這樣做時,現在任何對結構成員的引用都會給我錯誤:System.Nullable <>不包含'Member'的定義 – 2010-11-10 20:50:40

+1

@whydna:讀取可爲空的類型。基本上'SomeStruct?'是'Nullable '的語法糖。你不能直接訪問成員,但這是你使用具有值類型的'null'語義所付出的代價。 – 2010-11-10 20:53:37

+0

感謝您的幫助:) – 2010-11-10 20:58:44

10

在C#中一個結構是一個'值類型',它不能爲空。

如果您確實需要能夠將其設置爲空,則可以通過添加尾隨問號將其設置爲「可空」類型。

但是,您應該首先詳細介紹一下這個細節 - 它很可能根本不需要「結構」,但對於「類」會更好。

+3

同意。問題是我不擁有結構,我只是使用它:( – 2010-11-10 20:40:08

3

除非您定義了自定義泛型集合,否則不存在於System.Collections.Generic命名空間中。你的意思是Dictionary<TKey, TValue>

您可以使用可爲空的類型:Using Nullable Types (C# Programming Guide)

至於任何ValueType,您需要明確指出您將允許您的類型爲空值。您可以通過將'?'字符與您的類型名稱連接起來,或者將其標記爲可空(Nullable)來實現,其中T是結構的名稱。

+1

當我看到會有三個'Will'回答一個問題時,我無法抗拒回答!= P – 2010-11-10 20:49:56

+5

那裏有三個遺囑有三種方法嗎? – RenniePet 2014-02-13 01:54:51