C#中bool和Boolean类型有什么区别

Gar*_*hby 328 c# types boolean

C#boolBoolean类型有什么区别?

Ken*_*art 375

bool是一个别名,System.Boolean就像int是别名一样System.Int32.请在此处查看别名的完整列表:内置类型表(C#参考).

  • @Mikey我很确定Java决定使用这些别名来保持一致性,微软决定使用Java来保持一致...... :-) (42认同)
  • @MaxWell在Java中,`boolean`和`Boolean`不是一回事.一种是原始数据类型,另一种是对象. (19认同)
  • @asmin:这是一件C事.int,float等是C和C++程序员熟悉的关键字,因此Microsoft决定使用这些别名来保持一致性. (8认同)
  • @asim:懒惰?它输入较少,无需导入系统.就个人而言,我更喜欢别名.键入"int"比键入"Int32"要快得多. (6认同)
  • 从上面的链接microsoft说C#类型的关键字和它们的别名是可以互换的但是为什么我们需要别名,从我的观点来看布尔值更有意义然后bool和Int32比int更有意义然后为什么别名??? (5认同)
  • 是的,我知道,我只是在搞笑。 (2认同)
  • 这个别名只是给我一个问题.我使用bool因为我认为它是"正确的"类型,然后我很困惑为什么我的"bool"MVC DisplayTemplate没有触发.结果我需要将它命名为Boolean.如果我意识到布尔是官方类型而bool只是方便的别名,我从一开始就使用布尔. (2认同)

bhi*_*nks 48

我不相信有一个.

bool 只是一个别名 System.Boolean


Mag*_*Kat 22

他们是一样的.bool只是布尔的别名.


Zac*_*ame 18

没有区别 - bool只是System.Boolean的别名.

http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx


Rya*_*com 14

我意识到这是多年以后但我偶然发现这个页面来自谷歌同样的问题.

到目前为止,MSDN页面上存在一个细微差别.

VS2005

注意:

如果您需要一个也可以为null的布尔变量,请使用bool.有关更多信息,请参见可空类型(C#编程指南).

VS2010

注意:

如果您需要一个也可以为null的布尔变量,请使用bool?.有关更多信息,请参见可空类型(C#编程指南).

  • 我被这个绊了 - 这似乎是文档中的一个错误.我首先看到了VS2005页面(它在我的Google排名中显得更高!),并认为它暗示`bool`可以包含null,但是`Boolean`不能.即使从旧版本到新版本文档之间存在链接,我也没有仔细阅读新文档以注意单个"?"的区别. (2认同)

Joe*_*orn 13

他们是一样的.Boolean有助于简化C#和VB.Net之间的来回转换.大多数C#程序员倾向于选择'bool',但是如果你在一个有大量VB.Net和C#的商店,那么你可能更喜欢布尔,因为它在两个地方都有效.


its*_*att 9

一个是另一个的别名.


Car*_*rra 9

如前所述,它们是一样的.有两个因为bool是C#关键字而布尔是.Net类.


小智 5

bool是Boolean类的别名.我在类上调用方法时声明变量和类名时使用别名.

  • 出于兴趣 - 你为什么要同时使用它们?我主张使用其中一个.要么使用别名,要么不使用,否则代码看起来混乱和不一致. (8认同)
  • 混合别名和类名只会增加代码清晰度.选择一个并坚持下去,imho (5认同)
  • 是的,这是它应该完成的确切方式.int不是类名,你不应该在它上面调用方法.另一方面,它是内置类型,并定义Int32 i; 太冗长而且不自然. (4认同)
  • 我认为当你不同时使用它们时看起来很麻烦.使用别名声明数据类型并在访问静态方法时使用actuall类名:string x = String.Format("Today is:{0}",DateTime.Now); (2认同)
  • 所以你会这样做: int i = Int32.Parse(...); ?我对此有几个问题。首先,VS 默认情况下会以不同的方式突出显示(我知道你可以更改它,但大多数开发人员只使用默认的语法突出显示)。其次,搜索更加困难,尤其是长整型(long / Int64)。 (2认同)