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. 静态类是引用类型还是值类型?
- 9. 如何通过反射区分值类型,可为null的值类型,枚举,可空 - 枚举,引用类型?
- 10. 将可空类型转换为不可空类型?
- 11. 为空的类型入门类型定义打破了非可空类型
- 12. 双是不是可空类型
- 13. 引用类型.NET中的值类型
- 14. 什么是C#中的可空类型?
- 15. 什么是C#中的可空类型?
- 16. 引用类型是从WCF
- 17. VB.NET中的可空类型?
- 18. 引用类型
- 19. 引用类型
- 20. 定义对可空基本类型的泛型类型限制
- 21. 作为泛型的可为空类型
- 22. 的Java种类型和空引用
- 23. 重载一种方法来支持引用类型和可为空类型
- 24. !ClrStack局部变量 - 它是值类型还是引用类型
- 25. 字符串是值类型还是引用类型?
- 26. 对象是引用类型还是值类型?
- 27. 动态 - 它是引用类型还是值类型?
- 28. 是字符串值类型还是引用类型
- 29. 是列出值类型还是引用类型?
- 30. c#值类型和引用类型
您不能在C#中重载'='运算符。布尔标志由隐式转换运算符设置,而不是由赋值运算符设置。 – sepp2k 2010-06-30 12:29:07
哎呀谢谢sepp2k。 – kemiller2002 2010-06-30 12:31:22