366

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

4

15 回答 15

407

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

于 2008-09-25T17:39:20.950 回答
53

我不相信有一个。

bool只是一个别名System.Boolean

于 2008-09-25T17:37:05.027 回答
22

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

于 2008-09-25T17:37:43.387 回答
19

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

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

于 2008-09-25T17:43:20.300 回答
15

我意识到这是多年后的事了,但我偶然发现了谷歌的这个页面,上面有同样的问题。

到目前为止,MSDN 页面上有一个细微差别。

VS2005

笔记:

如果您需要一个也可以具有 null 值的布尔变量,请使用 bool。有关详细信息,请参阅 Nullable 类型(C# 编程指南)。

VS2010

笔记:

如果您需要一个也可以具有 null 值的布尔变量,请使用 bool?。有关详细信息,请参阅 Nullable 类型(C# 编程指南)。

于 2012-09-26T23:43:55.240 回答
13

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

于 2008-09-25T17:40:28.187 回答
10

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

于 2008-09-25T17:40:40.370 回答
9

一个是另一个的别名。

于 2008-09-25T17:37:55.743 回答
5

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

于 2008-09-25T17:40:49.620 回答
2

它们是相同的,Bool 只是 System.Boolean 的缩写。使用 VB.net 程序员时使用布尔值,因为它适用于 C# 和 Vb

于 2014-08-20T10:36:37.543 回答
2

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

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

于 2016-08-05T16:51:30.543 回答
1

请注意,Boolean只有您拥有using System;(通常但不一定包括在内)才会起作用(除非您将其写为System.Boolean)。 bool不需要using System;

于 2014-08-04T15:23:39.537 回答
0

除非您获得类型字符串,否则没有实际区别。当您使用反射或 GetType() 时,您会得到 {Name = "Boolean" FullName = "System.Boolean"} 两者。

于 2020-11-01T19:03:40.767 回答
-1

bool 是布尔值的别名。别名的作用是在编译代码之前将一个文本字符串替换为另一个文本字符串(如 notepad++ 中的 search/replace-all)。在运行时使用一个在另一个上没有影响。

在大多数其他语言中,一种是原始类型,另一种是对象类型(C# 术语中的值类型和引用类型)。C# 没有让您在两者之间进行选择。当您要调用 Boolean 类中定义的静态方法时,它会自动将 Boolean 视为引用类型。如果您创建一个新的布尔变量,它会自动将其视为引用类型(除非您使用 Activator.CreateInstance 方法)。

于 2016-08-05T20:07:59.733 回答
-2

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

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 项目)

于 2013-10-08T19:04:05.060 回答