实际上文章的标题本身就不合理,写这样的标题就意味着没有理解String 和 string.
最早我也有疑惑,现在可以说豁然开朗,写出来和大家分享。
.NET 和C#是不同的, .NET 是一个编程环境, C#是一种编程语言. .NET 支持 C#, VB.NET, C++ 等多种编程语言,为了让这些语言写的东西能够相互调用,一起运行,所以.NET里有 CTS (common type system), CLR
这个概念大家都知道,关键就在这里:
CTS 定义了一系列的数据类型,例如
CTS
System.Byte
System.Int32
System.Single
System.Double
System.String
System.DateTime
System.Object
而C#对CTS的数据类型有一些别名
byte,
int,
float,
double,
string,
n/a
object
所以string 实际上是 System.String
既然是别名, 两者就是完全一样的,没有什么区别
但是在C#编程的时候还是写 string 比较好
引申出来一个问题
System.Object 是 class, System.String, String.Int32,System.DateTime 等都是 Struct, 所以
System.Object 是引用类型, 而其他的都是 值类型
所以 object obj = null; 是可以的, int value = null; 是不合法的
全文完.