【发布时间】:2011-02-21 06:43:39
【问题描述】:
? 是什么意思:
public bool? Verbose { get; set; }
应用于string?时,出现错误:
类型“string”必须是不可为空的值类型才能在泛型类型或方法“System.Nullable”中用作参数“T”
【问题讨论】:
-
只是附加到描述可空类型的其他答案 - bool 作为 0 或 1 存储在内存中,没有其他选择。通过使其成为可空类型分配更大的内存区域,其值可以为真、假或空。您会注意到您现在可以执行 Verbose.HasValue 之类的操作,如果将其定义为布尔值,您将无法执行此操作。
-
另外添加到一般对话中,所有引用类型默认情况下都可以为空(IE 你可以将它们全部设置为空),所以 Nullable
类型被设计为不接受它们,因为它会重复功能并使事情复杂化。