2013-01-17 94 views
4

可能重复:
The type ‘string’ must be a non-nullable type in order to use it as parameter T in the generic type or method ‘System.Nullable<T>’为什么字符串可以为空?

正如标题所说,为什么字符串默认在C#中为空的,但是如果我想,说,整数或双打为空,我有明确地这样说?

+2

因为一个字符串是一个引用类型。 –

+1

@JW。 - 我不认为问题是相同的。这比拟议的副本要普遍得多。 – JDB

回答

10

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

+4

+1。 “从'struct'派生”并不完全正确 - http://msdn.microsoft.com/en-us/library/s1ax56ch(v=vs.100).aspx:“所有值类型都是从系统中隐式派生的。值类型。” –

+0

并且[ValueType](http://msdn.microsoft.com/zh-cn/library/system.valuetype.aspx)也从对象派生,但这并不意味着它是引用类型。你的陈述大部分是准确的,但我会考虑改写一下 – psubsee2003

+0

好点,所提供的链接肯定比我的单行更完整。 –

相关问题