日期:2014-05-17  浏览次数:21161 次

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(类库)中一种数据类型。
------解决方案--------------------
引用:
一个是C#类型,一个是CLR类型

建议看看<CLR VIA C#>一书,里边讲的比较清楚, 此书作者建议编程时多用CLR类型


糖糖说得很好,补充下,.NET框架有2套类型系统,CLS和CTS。

它们和CLR以及语言定义的类型的关系看这个图:

------解决方案--------------------
本帖最后由 caozhy 于 2013-11-05 12:40:52 编辑
引用:
http://www.aiyiweb.com/program/a/2008050727404.shtml


是这样的,如果你编写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,你怎么移植呢?