C# 为什么字符串可以为空?

C# 为什么字符串可以为空?,c#,.net,C#,.net,可能重复: 正如标题所说,为什么字符串在C#中默认为空,但如果我想,比如说,int或double为空,我必须明确地说?因为字符串是引用类型,派生自对象,而[大多数]其他默认类型是值类型,隐式派生自System.ValueType 因为字符串是引用类型。@JW。-我认为问题不一样。这比提议的副本更为普遍。+1。“派生自struct”不完全正确-:“所有值类型都隐式派生自System.ValueType。”并且也派生自object,但这并不意味着它是引用类型。你的说法大多是准确的,但我会考虑改写一

可能重复:


正如标题所说,为什么字符串在C#中默认为空,但如果我想,比如说,int或double为空,我必须明确地说?

因为字符串是引用类型,派生自
对象
,而[大多数]其他默认类型是值类型,隐式派生自System.ValueType

因为字符串是引用类型。@JW。-我认为问题不一样。这比提议的副本更为普遍。+1。“派生自
struct
”不完全正确-:“所有值类型都隐式派生自System.ValueType。”并且也派生自object,但这并不意味着它是引用类型。你的说法大多是准确的,但我会考虑改写一个好点,所提供的链接肯定比我的单线更完整。这不是一个很好的答案。这仅仅是陈述客观事实。我们知道这是一个参考类型,我们想知道为什么!我认为C++中的字符串是一个类而不是一个原始的,但是C是不是C++,并且有很多不同(包括它如何处理基元)。那么,为什么不将字符串作为值类型而不是引用类型处理呢?@psubsee2003类
System.ValueType
本身就是引用类型。例如,您可以说
ValueType vt1=null
值类型vt2=DateTime.Now;/*装箱*/
。但是
DateTime
是值类型的一个示例。