为什么字符串可以为空?

Pau*_*ean 6 .net c#

可能重复:
类型'string'必须是非可空类型才能在泛型类型或方法'System.Nullable <T>'中将其用作参数T.

正如标题所说,为什么字符串默认在C#中可以为空,但如果我想要,比如说,int或double是null,我必须明确说出来吗?

RJ *_*han 11

因为string是引用类型,所以从object[和大多数]其他默认类型派生的值是类型,从System.ValueType隐式派生;

  • 这不是一个好的答案.它只是说明了这一点.我们知道它是一种参考类型,我们想知道为什么!我知道在C++中,字符串是一个类而不是原始类,但C#不是C++,并且有许多不同之处(包括它如何处理'基元').那么为什么不将字符串作为值类型而不是参考类型处理? (5认同)
  • +1."源自`struct`"并不完全正确 - http://msdn.microsoft.com/en-us/library/s1ax56ch(v=vs.100).aspx:"所有值类型都是从系统隐式派生的.值类型." (4认同)