【发布时间】:2010-09-13 04:20:12
【问题描述】:
C#中bool和Boolean类型有什么区别?
【问题讨论】:
C#中bool和Boolean类型有什么区别?
【问题讨论】:
bool 是 System.Boolean 的别名,就像 int 是 System.Int32 的别名一样。在此处查看完整的别名列表:Built-In Types Table (C# Reference)。
【讨论】:
boolean 和 Boolean 不是一回事。一种是原始数据类型,另一种是对象。
我不相信有一个。
bool 只是System.Boolean 的别名
【讨论】:
他们是同一个。 bool 只是布尔值的别名。
【讨论】:
没有区别 - bool 只是 System.Boolean 的别名。
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
【讨论】:
我意识到这是多年后的事了,但我偶然发现这个页面来自谷歌,有同样的问题。
到目前为止,MSDN 页面上有一个细微差别。
VS2005
注意:
如果您需要一个也可以具有 null 值的布尔变量,请使用 bool。 有关详细信息,请参阅 Nullable 类型(C# 编程指南)。
VS2010
注意:
如果您需要一个也可以具有 null 值的布尔变量,请使用 bool?。 有关详细信息,请参阅 Nullable 类型(C# 编程指南)。
【讨论】:
bool 可以包含 null,但 Boolean 不能。尽管有一个从旧文档到新文档的链接,但我没有仔细阅读新文档以注意到单个 ? 的区别。
它们是一样的。布尔值有助于简化 C# 和 VB.Net 之间的来回转换。大多数 C# 程序员更喜欢“bool”,但如果你在一个同时有很多 VB.Net 和 C# 的商店里,那么你可能更喜欢 Boolean,因为它在这两个地方都适用。
【讨论】:
如前所述,它们是相同的。有两个,因为 bool 是 C# 关键字,而 Boolean 是 .Net 类。
【讨论】:
一个是另一个的别名。
【讨论】:
bool 是布尔类的别名。我在声明变量时使用别名,在类上调用方法时使用类名。
【讨论】:
它们是相同的,Bool 只是 System.Boolean 的缩写。与 VB.net 程序员一起使用 Boolean,因为它适用于 C# 和 Vb
【讨论】:
bool 是原始类型,这意味着值(在这种情况下为真/假)直接存储在变量中。布尔值是一个对象。 Boolean 类型的变量存储对 Boolean 对象的引用。唯一真正的区别是存储。对象总是比原始类型占用更多内存,但实际上,将所有布尔值更改为 bool 不会对内存使用产生任何明显影响。
我错了;这就是它在带有布尔值和布尔值的 java 中的工作方式。在 C# 中,bool 和 Boolean 都是引用类型。它们都直接将它们的值存储在变量中,它们都不能为null,并且它们都需要一个“convertTO”方法来将它们的值存储为另一种类型(例如int)。如果您需要调用 Boolean 类中定义的静态函数,那么使用哪一个才重要。
【讨论】:
bool 和 Boolean 不是两种不同的类型,一种类型不是引用类型,您可以使用任一标识符对该 one 类型调用静态方法,实际上你不需要调用ConvertTo 方法来将其转换为另一种类型。
bool 和 Boolean 都是引用类型”是不正确的。 bool 和 Boolean 这两个词都指向同一个类型,并且该类型是值类型,而不是引用类型。
请注意,Boolean 仅在您拥有 using System;(通常但不一定包括在内)时才有效(除非您将其写为 System.Boolean)。 bool 不需要using System;
【讨论】:
除非你得到类型字符串,否则没有实际区别。 当您使用反射或 GetType() 时,您会得到 {Name = "Boolean" FullName = "System.Boolean"} 两者兼得。
【讨论】:
bool 是布尔值的别名。别名的作用是在编译代码之前用另一个文本字符串替换一个文本字符串(如 notepad++ 中的 search/replace-all)。在运行时使用一个在另一个上没有影响。
在大多数其他语言中,一种是原始类型,另一种是对象类型(C# 术语中的值类型和引用类型)。 C# 没有让您在两者之间进行选择。当您要调用 Boolean 类中定义的静态方法时,它会自动将 Boolean 视为引用类型。如果您创建一个新的布尔变量,它会自动将其视为引用类型(除非您使用 Activator.CreateInstance 方法)。
【讨论】:
也许 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 项目)
【讨论】:
System.Boolean 而不仅仅是Boolean。 using System; 之所以出现,是因为它允许将 Boolean 正确解释为 System.Boolean。与其说是更简单,不如说是更简洁。