原载自
http://phcis.cnblogs.com
对于初学者来说,Boolean,bool以及String,string等看起来长的差不多的这些东西觉得很迷惑,今天我就自己的技术水平来讲讲这个东西。
就拿Boolean,bool这一对儿来说事吧,他们呢都是表示布尔值,即true和false。
根据MSDN的描述bool其实就是Boolean的别名,实际使用无任何差别。它们的成员也是一样的。
另外还有一种说法就是bool是c#等具体语言的叫法,Boolean是.NetFramework的叫法,不知道是不是这么回事。我感觉好像是。
最后总结:bool就像你的乳名,你爹妈以及你们内部所属成员都认识,Boolean就像你的学名。大家都认识。不过不管按照学名还是乳名称呼你,最终的目的是一样的,还是你这个人。
对于String和string的关系也是如此。
posted on 2008-01-11 14:50
phcis 阅读(2679)
评论(26) 编辑 收藏 网摘 所属分类:
.Net框架
发表评论
bool是System.Boolean的别名,bool其实就是一个关键字而已.
string关键字也是System.String的别名.
bool,string只是给编译器看的,翻译完之后就只剩下.NET Framework里面的Boolwan和String类型了.
c#中String跟string的“区别”
string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色)
c# string映射为.net Framework的String
如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作
如果使用c#,建议使用string,比较符合规范
string始终代表 System.String(1.x) 或 ::System.String(2.0) ,String只有在前面有using System;的时候并且当前命名空间中没有名为String的类型(class、struct、delegate、enum)的时候才代表System.String
string是关键字,String不是,也就是说string不能作为类、结构、枚举、字段、变量、方法、属性的名称,而String可以
@kiler
呵呵 够详细,欢迎多多指教我们初学者。
补充一下:
string和bool是C#语言规范的一部分
System.String和System.Boolean是.NET框架类库的一部分
from MSDN:
string 类型表示 Unicode 字符的字符串。string 是 .NET Framework 中的 String 的别名。字符串是不可变的 - 字符串对象一旦创建,其内容就不能更改。
bool 关键字是 System.Boolean 的别名。它用于声明变量来存储布尔值 true 和 false。
enum bool {false,true};
呵呵。
@kiler
相信想找出不同的人很多,能学习的总比很多无病呻吟的好一点?
如果有区别,大家一起讨论不是更好?
如果使用c#,建议使用string,比较符合规范
--------------
这个观点不太同意,无论是什么语言,用.Net Framework的标准类型都是最好的方式,别名只是为了迎合一些老程序员的旧习,比如Int16,Int32,Int64怎么看也比short,int,long更加直观。而且用.Net Framework的标准类型也有助于和其他语言的.net程序员进行交流,.Net Framework中的标准方法可以有ToSingle(),但绝对不会有ToFloat()。
如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作
---------------
编译器不会因此少做什么工作的......
忽然发现是不是可以这样理解?
如果用string a="aaa";
只能在c#内使用,而使用String a="aaa";这样的东西可以在.net框架下所有语言中通用?
@phcis
不同语言的定义方式都会不同,语句通用是不现实的。
String a;和Dim a as String怎么可能会一样,通用的只是类型名而已。
看了文章和评论的,了解了一些,但是觉得好像没什么意义。
--引用--------------------------------------------------
球球: 如果使用c#,建议使用string,比较符合规范
--------------
这个观点不太同意,无论是什么语言,用.Net Framework的标准类型都是最好的方式,别名只是为了迎合一些老程序员的旧习,比如Int16,Int32,Int64怎么看也比short,int,long更加直观。而且用.Net Framework的标准类型也有助于和其他语言的.net程序员进行交流,.Net Framework中的标准方法可以有ToSingle(),但绝对不会有ToFloat()。
如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作
---------------
编译器不会因此少做什么工作的......
--------------------------------------------------------
我是建议使用关键字而不是使用所谓的.net framework标准的。
net System.String
c# string
CLR string
这些都是一个东西,这就是CLR的CTS规则。
--引用--------------------------------------------------
kiler: c#中String跟string的“区别”
string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色)
.....
--------------------------------------------------------
这种说法也不太对,严格的说:string 并不是一个类,它是C#语言的一个关键字,String才是一个C#类。string两者的一些讨论之前也有过
http://www.cnblogs.com/AndersLiu/archive/2007/12/20/1007668.html
@kiler
同意,就算要比较也是
bool 和 System.Boolean ,而不是 bool 和 Boolean.
@女生跟班
只是个人观点问题,C#语言规范是推荐使用关键字的,而Jeffrey则偏向于使用FCL类型,我是比较赞成Jeffrey的观点的,虽然我一直用的关键字-_-!,还是那句老话,别名只是为了迎合一些老程序员的旧习(比如我),但有些东西很容易混淆,比如C++的long和C#的long完全是两个东西。
string和int是c#中的类,String和Int32是.net Framework类库中的类
上个月好像也有过类似的讨论
--引用--------------------------------------------------
球球: @女生跟班
只是个人观点问题,C#语言规范是推荐使用关键字的,而Jeffrey则偏向于使用FCL类型,我是比较赞成Jeffrey的观点的,虽然我一直用的关键字-_-!,还是那句老话,别名只是为了迎合一些老程序员的旧习(比如我),但有些东西很容易混淆,比如C++的long和C#的long完全是两个东西。
--------------------------------------------------------
嗯,这个我同意。
一般是按照项目规范走,就像我现在写String.Empty而不写""一样。
哈哈,看到bool看成boo,想来看看讨论boo的
bool就是C# SDK的一个关键字,而Boolean是.NetFramework的叫法。观点正确
个人觉得string是基础类型,String是类包含了构造函数、处理方法、属性等
完全不能等同。
个人觉得string是基础类型,String是类包含了构造函数、处理方法、属性等
完全不能等同。
----
同意此看法