注册中国移动飞信 注册中国移动飞信 注册中国移动飞信

随笔 - 88  文章 - 0  评论 - 171 
                                                                                          原载自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框架

  回复  引用  查看    
2008-01-11 15:00 | egmkang      
bool是System.Boolean的别名,bool其实就是一个关键字而已.
string关键字也是System.String的别名.
bool,string只是给编译器看的,翻译完之后就只剩下.NET Framework里面的Boolwan和String类型了.
  回复  引用  查看    
2008-01-11 15:02 | kiler      
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可以

  回复  引用  查看    
2008-01-11 15:05 | phcis      
@kiler
呵呵 够详细,欢迎多多指教我们初学者。


  回复  引用  查看    
2008-01-11 15:12 | omnislash      
补充一下:
string和bool是C#语言规范的一部分
System.String和System.Boolean是.NET框架类库的一部分
  回复  引用    
2008-01-11 15:38 | rabbit马甲 [未注册用户]
from MSDN:
string 类型表示 Unicode 字符的字符串。string 是 .NET Framework 中的 String 的别名。字符串是不可变的 - 字符串对象一旦创建,其内容就不能更改。

bool 关键字是 System.Boolean 的别名。它用于声明变量来存储布尔值 true 和 false。
  回复  引用  查看    
2008-01-11 15:40 | zeus2      
enum bool {false,true};
呵呵。
  回复  引用  查看    
2008-01-11 15:44 | phcis      
@kiler
相信想找出不同的人很多,能学习的总比很多无病呻吟的好一点?

如果有区别,大家一起讨论不是更好?
  回复  引用  查看    
2008-01-11 15:50 | 球球      
如果使用c#,建议使用string,比较符合规范
--------------
这个观点不太同意,无论是什么语言,用.Net Framework的标准类型都是最好的方式,别名只是为了迎合一些老程序员的旧习,比如Int16,Int32,Int64怎么看也比short,int,long更加直观。而且用.Net Framework的标准类型也有助于和其他语言的.net程序员进行交流,.Net Framework中的标准方法可以有ToSingle(),但绝对不会有ToFloat()。

如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作
---------------
编译器不会因此少做什么工作的......
  回复  引用  查看    
2008-01-11 15:53 | phcis      
忽然发现是不是可以这样理解?

如果用string a="aaa";
只能在c#内使用,而使用String a="aaa";这样的东西可以在.net框架下所有语言中通用?
  回复  引用  查看    
2008-01-11 16:06 | 球球      
@phcis
不同语言的定义方式都会不同,语句通用是不现实的。
String a;和Dim a as String怎么可能会一样,通用的只是类型名而已。
  回复  引用  查看    
2008-01-11 16:12 | phcis      
@球球
呵呵 了解
  回复  引用  查看    
2008-01-11 16:33 | 木饭      
看了文章和评论的,了解了一些,但是觉得好像没什么意义。
  回复  引用  查看    
2008-01-11 16:37 | 女生跟班      
--引用--------------------------------------------------
球球: 如果使用c#,建议使用string,比较符合规范
--------------
这个观点不太同意,无论是什么语言,用.Net Framework的标准类型都是最好的方式,别名只是为了迎合一些老程序员的旧习,比如Int16,Int32,Int64怎么看也比short,int,long更加直观。而且用.Net Framework的标准类型也有助于和其他语言的.net程序员进行交流,.Net Framework中的标准方法可以有ToSingle(),但绝对不会有ToFloat()。

如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作
---------------
编译器不会因此少做什么工作的......
--------------------------------------------------------
我是建议使用关键字而不是使用所谓的.net framework标准的。
  回复  引用    
2008-01-11 16:46 | hahahehe [未注册用户]
net System.String
c# string
CLR string
这些都是一个东西,这就是CLR的CTS规则。
  回复  引用  查看    
2008-01-11 16:56 | 阿不      
--引用--------------------------------------------------
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
  回复  引用  查看    
2008-01-11 16:57 | 瑞克      
@kiler
同意,就算要比较也是
bool 和 System.Boolean ,而不是 bool 和 Boolean.

  回复  引用  查看    
2008-01-11 17:02 | 球球      
@女生跟班
只是个人观点问题,C#语言规范是推荐使用关键字的,而Jeffrey则偏向于使用FCL类型,我是比较赞成Jeffrey的观点的,虽然我一直用的关键字-_-!,还是那句老话,别名只是为了迎合一些老程序员的旧习(比如我),但有些东西很容易混淆,比如C++的long和C#的long完全是两个东西。
  回复  引用  查看    
2008-01-11 18:57 | SZW      
string和int是c#中的类,String和Int32是.net Framework类库中的类

上个月好像也有过类似的讨论
  回复  引用  查看    
2008-01-11 19:33 | 没剑      
偶是用VB的,飘过~
  回复  引用  查看    
2008-01-11 20:28 | 女生跟班      
--引用--------------------------------------------------
球球: @女生跟班
只是个人观点问题,C#语言规范是推荐使用关键字的,而Jeffrey则偏向于使用FCL类型,我是比较赞成Jeffrey的观点的,虽然我一直用的关键字-_-!,还是那句老话,别名只是为了迎合一些老程序员的旧习(比如我),但有些东西很容易混淆,比如C++的long和C#的long完全是两个东西。
--------------------------------------------------------
嗯,这个我同意。
一般是按照项目规范走,就像我现在写String.Empty而不写""一样。
  回复  引用    
2008-01-12 10:07 | fsfsdsf [未注册用户]
这东东也放首页
  回复  引用  查看    
2008-01-12 16:29 | 沙加      
这玩意儿讨论过很多次了~~还要炒炒冷饭~~;(
  回复  引用  查看    
2008-01-12 20:36 | BirdsHover      
哈哈,看到bool看成boo,想来看看讨论boo的

bool就是C# SDK的一个关键字,而Boolean是.NetFramework的叫法。观点正确
  回复  引用    
2008-05-30 17:53 | yr [未注册用户]
个人觉得string是基础类型,String是类包含了构造函数、处理方法、属性等
完全不能等同。
  回复  引用    
2008-07-22 17:01 | justtest [未注册用户]
test
  回复  引用    
2008-08-05 15:46 | java+.net [未注册用户]
个人觉得string是基础类型,String是类包含了构造函数、处理方法、属性等
完全不能等同。

----
同意此看法


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 
注册中国移动飞信 注册中国移动飞信 注册中国移动飞信