C#中,string和String ,decimal和Decimal,int和Int32……
C#中,string和String ,decimal和Decimal,int和Int32有什么区别?
------解决方案--------------------一个是C#类型,一个是CLR类型
建议看看<CLR VIA C#>一书,里边讲的比较清楚, 此书作者建议编程时多用CLR类型
------解决方案--------------------string 是c#语言的关键字,属于语言规范的范畴。
String是.net FCL(类库)中一种数据类型。
------解决方案--------------------
糖糖说得很好,补充下,.NET框架有2套类型系统,CLS和CTS。
它们和CLR以及语言定义的类型的关系看这个图:
------解决方案--------------------本帖最后由 caozhy 于 2013-11-05 12:40:52 编辑
是这样的,如果你编写FCL那样的公共类库,你应该使用CLS类型,如上图所示,CLS是所有编程语言都支持的。如果你编写C#程序,你应该充分使用C#支持的类型(否则C#支持CLS以外的类型起个什么劲?),比如说,CLS中只有Int32,但是没有uint。
这篇文章说推荐使用“使用CLR默认的类型”,但是后面等同于使用大写的类型,这纯属断章取义。应该这么说,恰恰相反,你应该尽量使用编程语言的关键字,这不影响你使用CLR的类型,使用语言的关键字,这样更美观自然。更重要的是,这样可以更好地实现程序代码的移植。当然,C#只有IL的实现,但是C++、Pascal/Delphi、Java(J++)、Javascript等等既可以面向IL,又可以面向其它平台的语言,如果你使用语言本身的关键字,你的代码可以直接利用到别的项目中,如果你使用的是System.Object System.Int32,你怎么移植呢?