116
A
回答
119
不,可为空是结构。正在发生的事情是,可为空的结构有两个值:
- 的数据类型(
int
为int?
,DateTime
为DateTime?
等)的值。 - 一个布尔值,告诉数据类型值是否已经设置。 (
HasValue
是属性。)
当您设置数据类型的值,该结构改变HasValue
为true。
6
没有,可空类型,其实是一个结构。运行时会智能地为您处理空值的设置,给出参考类型的外观,当它不是时......
+2
我想查询'智能处理',而不是主观的。就我个人而言,我觉得这种行为令人困惑,并且经常令人讨厌。 – nicodemus13 2012-12-17 18:03:48
1
可以为空的类型不能是引用类型。
24
从Nullable Types (C# Programming Guide):
可空类型是System.Nullable结构的实例。
和
空类型表示可以分配空的值值型变量。您不能基于引用类型创建可为空的类型。 (参考类型已经支持空值。)
因此,不,它们不是引用类型。
0
您应该不需要将引用类型设置为可为空的类型,因为您可以在其位置传递null。
11
可为空的类型既不是值类型也不是引用类型。它们更像值类型,但具有一些参考类型的属性。
当然,可以设置为空的类型为null
。此外,可为空的类型不能满足通用的约束条件。此外,当您将HasValue
等于false
的可空类型框中时,您会得到一个指针而不是一个可装箱的可空类型(与拆箱相似的情况)。
这些属性使可为空的类型为非值类型,但它们肯定不是引用类型。它们是它们自己特殊的可空值类型。
相关问题
- 1. 确定类型是引用类型还是值类型
- 2. 值类型字段是引用类型?
- 3. 可选的引用类型
- 4. 泛型和可空类型
- 5. Mono.Cecil类型引用类型?
- 6. AutoMapper类型转换器映射可空类型不可空类型
- 7. 可为空的值类型只是包装常规值类型?
- 8. 如何通过反射区分值类型,可为null的值类型,枚举,可空 - 枚举,引用类型?
- 9. 将可空类型转换为不可空类型?
- 10. 为空的类型入门类型定义打破了非可空类型
- 11. 双是不是可空类型
- 12. 什么是C#中的可空类型?
- 13. 引用类型是从WCF
- 14. VB.NET中的可空类型?
- 15. 引用类型
- 16. 引用类型
- 17. 定义对可空基本类型的泛型类型限制
- 18. 的Java种类型和空引用
- 19. !ClrStack局部变量 - 它是值类型还是引用类型
- 20. 字符串是值类型还是引用类型?
- 21. 是字符串值类型还是引用类型
- 22. c#值类型和引用类型
- 23. 类型不能用作索引类型
- 24. 从一个空类型转换为另一种可空类型
- 25. 是F#引用类型中的选项类型?
- 26. C# - 引用类型引用另一个引用类型
- 27. LINQ:GROUPBY多可空类型
- 28. Android ksoap2可空类型
- 29. XmlCodeExporter和可空类型
- 30. TryParse为可空类型
您不能在C#中重载'='运算符。布尔标志由隐式转换运算符设置,而不是由赋值运算符设置。 – sepp2k 2010-06-30 12:29:07
哎呀谢谢sepp2k。 – kemiller2002 2010-06-30 12:31:22