2008-09-25 106 views

回答

327

boolSystem.Boolean的别名,就像intSystem.Int32的别名一样。在这里查看别名的完整列表:Built-In Types Table (C# Reference)

+4

从上面的链接微软说C#类型的关键字和他们的别名是可以互换的但为什么我们需要别名,从我的角度来看布尔是更有意义的,然后布尔和Int32更有意义,然后int然后为什么别名? – 2010-03-18 11:39:35

+5

@asim:懒惰?它不那么打字并且避免了导入系统的需要。就个人而言,我更喜欢别名。键入“int”比键入“Int32”要快得多。 – 2010-03-18 13:47:34

+7

@asmin:这是一个C的东西。 int,float等是C和C++程序员熟悉的关键字,因此Microsoft决定使用这些别名来保持一致性。 – 2011-02-03 01:34:16

41

我不相信有一个。

bool仅仅是System.Boolean

22

他们是在同一个别名。布尔只是布尔的别名。

9

一个是另一个的别名。

13

它们是相同的。布尔有助于简化C#和VB.Net之间的来回转换。大多数C#程序员倾向于喜欢'bool',但是如果你在一个有很多VB.Net和C#的商店,那么你可能更喜欢布尔值,因为它在两个地方都可以工作。

8

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

5

bool是布尔类的别名。在类中调用方法时,我使用别名来声明变量和类名。

13

我意识到这是很多年以后,但我碰到这个页面跌跌撞撞从谷歌同样的问题。

到目前为止,MSDN页面上有一点小小的区别。

VS2005

注:

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

VS2010

注:

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

-1

也许布尔是一点点 “更轻” 比布尔值;有趣的是,这个改变:

namespace DuckbillServerWebAPI.Models 
{ 
    public class Expense 
    { 
     . . . 
     public bool CanUseOnItems { get; set; } 
    } 
} 

...这样的:

namespace DuckbillServerWebAPI.Models 
{ 
    public class Expense 
    { 
     . . . 
     public Boolean CanUseOnItems { get; set; } 
    } 
} 

...使我的CS文件发芽一个 “使用系统;”将类型改回“bool”导致using子句的头发变成灰色。

(Visual Studio 2010中,项目的WebAPI)

1

注意Boolean只会工作是你有using System;(通常是,但不一定包括)(除非你把它写成System.Boolean)。 bool不需要using System;

2

它们是一样的,Bool只是缩短了System.Boolean。在使用VB.net程序员时使用布尔值,因为它适用于C#和Vb

0

bool是一种原始类型,意味着值(真/假在本例中)直接存储在变量中。布尔是一个对象。布尔类型的变量存储对布尔对象的引用。唯一真正的区别是存储。一个对象总是会占用比原始类型更多的内存,但实际上,将所有布尔值更改为布尔值对内存使用率没有任何明显影响。

我错了;这就是它在java中使用布尔值和布尔值的方式。在C#中,布尔和布尔都是引用类型。它们都直接在变量中存储它们的值,它们都不能为null,并且它们都需要一个“convertTO”方法来将它们的值存储在另一个类型中(例如int)。如果您需要调用布尔类中定义的静态函数,那么只使用哪一个。

-1

bool是布尔的别名。别名的作用就是在编译代码之前用另一个文本替换一个文本字符串(如记事本++中的search/replace-all)。在运行时使用一个在另一个上不起作用。

在大多数其他语言中,一个是基本类型,另一个是对象类型(C#术语中的值类型和引用类型)。 C#不允许您在两者之间进行选择。当你想调用一个在布尔类中定义的静态方法时,它会自动将魔术视为一个参考类型。如果您创建了一个新的布尔变量,它会自动将其视为引用类型(除非使用Activator.CreateInstance方法)。