如何在C#中使非值类型可以为空?

时间:2010-11-18 15:04:37

标签: c# types reference

例如:

public class Stereo {
   public Speaker? LeftSpeaker;
   public int? Volume;
}

int?工作正常,但我无法使扬声器可以为空。这对谷歌来说实在是太难了,我觉得这很简单......

4 个答案:

答案 0 :(得分:13)

你为什么要这样?可以设置非值类型(即引用类型)并与null进行比较。

在引用类型对象上添加Nullable<T>包装器将创建两个层的可空性;无意义的复杂性,因此是不允许的。

答案 1 :(得分:2)

很简单。 “非值”类型实际上在.NET中称为引用类型,并且可以自动为空。只需改变您的代码:

public class Stereo {
   public Speaker LeftSpeaker; // ? removed for ref type
   public int? Volume;
}

答案 2 :(得分:0)

狂野赃物:

public class Stereo { 
   public Speaker LeftSpeaker; 
   public int? Volume; 

   public Stereo() {
       LeftSpeaker = null;   // Mission accomplished.
   }
} 

答案 3 :(得分:0)

很多鱼已经在这里 - 但是如果你想学习如何捕鱼,我建议你看一下Jon Skeet的书C# in Depth。第4.1至4.5章正在讨论C#中“无效概念”的所有方面。