bool
和Boolean
类型有什么区别?#1 楼
bool
是System.Boolean
的别名,就像int
是System.Int32
的别名一样。在此处查看别名的完整列表:内置类型表(C#参考)。#2 楼
我不相信有一个。bool
只是System.Boolean
的别名#3 楼
他们是一样的。 bool只是布尔值的别名。#4 楼
没有区别-bool只是System.Boolean的别名。http://msdn.microsoft.com/zh-cn/library/c8f5xwh7(VS.71).aspx
#5 楼
我意识到这是很多年后的事,但是我在Google的同一页面上偶然发现了同样的问题。到目前为止,MSDN页面上有一个细微的差别。
VS2005
注意:
如果需要布尔值也可以为null的布尔变量,请使用bool。
有关更多信息,请参见Nullable。类型(C#编程指南)。
VS2010
注意:
如果需要布尔变量可以也具有null值,请使用bool?。
有关更多信息,请参见Nullable Types(C#编程指南)。
评论
这让我感到震惊-这似乎是文档中的错误。我首先看到了VS2005页面(对我来说,它在Google排名中排名更高!),并认为它暗示bool可以包含null,但Boolean不能。即使从较旧的文档到较新的文档都有链接,但我没有足够详尽地阅读较新的文档才能注意到其中一个?区别。
–Logan领取
2015年10月27日在20:16
@Timothy Macharia谁/怎么了? “转换为空”是什么意思?
–令人难以置信的扬
20 Dec 16'在8:28
#6 楼
他们是一样的。布尔值有助于简化C#和VB.Net之间的来回转换。大多数C#程序员倾向于使用'bool',但是如果您在VB.Net和C#都很多的商店中,则您可能更喜欢Boolean,因为它在两个地方都可以使用。#7 楼
如前所述,它们是相同的。之所以有两个,是因为bool是C#关键字,布尔值是.Net类。评论
那么bool跨平台兼容性会更好吗?
–哔哔声
09年3月11日在4:11
#8 楼
一个是另一个的别名。#9 楼
bool是布尔类的别名。在声明变量时使用别名,在类上调用方法时使用类名。评论
出于兴趣-为什么同时使用两者?我主张使用其中一个。要么使用别名,要么不使用别名,否则代码看起来混乱且不一致。
–肯特·布加特(Kent Boogaart)
08-09-25在17:42
当您不同时使用两者时,我认为它看起来很混乱。访问静态方法时,请使用别名声明数据类型,并使用实际的类名:string x = String.Format(“ Today is:{0}”,DateTime.Now);
–斯科特·多曼(Scott Dorman)
08-09-25 at 17:49
所以你会做:int i = Int32.Parse(...); ?我对此有两个问题。首先,VS默认情况下将以不同的方式突出显示(我知道您可以更改此设置,但大多数开发人员仅使用默认语法突出显示)。其次,搜索比较困难,尤其是对于long(long / Int64)。
–肯特·布加特(Kent Boogaart)
08-09-25在18:20
是的,那是应该完成的确切方法。 int不是类名,您不应在其上调用方法。另一方面,它是内置类型,并定义Int32 i;太冗长而不自然。
–AVID
08-09-25在19:14
混合使用别名和类名只会增加代码清晰度。挑一个,坚持下去,恕我直言
– Arne Claassen
09年9月9日在22:07
#10 楼
它们是相同的,Bool只是System.Boolean的缩写。当您使用VB.net程序员时,请使用布尔值,因为它可以同时使用C#和Vb#11 楼
请注意,只有具有Boolean
(通常但不一定包括)的using System;
才有效(除非您将其写为System.Boolean
)。 bool
不需要using System;
#12 楼
bool是原始类型,意味着值(在这种情况下为true / false)直接存储在变量中。布尔值是一个对象。布尔类型的变量存储对布尔对象的引用。唯一真正的区别是存储。一个对象将总是比原始类型占用更多的内存,但是实际上,将所有布尔值更改为bool不会对内存使用产生任何明显影响。我错了;这就是使用boolean和Boolean在Java中工作的方式。在C#中,bool和Boolean都是引用类型。它们都直接将其值存储在变量中,它们都不能为null,并且都需要使用“ convertTO”方法将其值存储在另一种类型(例如int)中。仅在需要调用布尔类中定义的静态函数时使用哪一个才有意义。
评论
bool和Boolean不是两种不同的类型,一种类型不是引用类型,您可以使用任一标识符在该类型上调用静态方法,而实际上不需要调用ConvertTo方法将其转换为另一种类型类型。
–服务
16年8月5日在17:59
“布尔和布尔都是引用类型”是不正确的。布尔和布尔这两个词都引用相同的类型,并且该类型是值类型,而不是引用类型。
– Tanner Swett
17年1月29日在18:04
谢谢,我正在尝试检查C#在此字段中是否与java相同。您的回答是唯一将其与Java进行比较的人(即使可能不是故意的)。 :)
– bvdb
17-2-8在14:38
#13 楼
除非获得类型字符串,否则没有实际区别。使用反射或GetType()时,两者都得到
{Name =“ Boolean” FullName =“ System.Boolean”}
。
#14 楼
bool是布尔值的别名。别名的作用是在编译代码之前,将一个文本字符串替换为另一个文本字符串(例如notepad ++中的search / replace-all)。在大多数其他语言中,一个将是原始类型,另一个将是对象类型(C#术语中的值类型和引用类型)。 。 C#不允许您在两者之间进行选择。当您要调用在Boolean类中定义的静态方法时,它会自动将Boolean视为引用类型。如果创建新的布尔变量,它将自动将其视为引用类型(除非您使用Activator.CreateInstance方法)。
评论
布尔值是一种值类型,而不是引用类型。
–服务
16年8月5日在20:30
#15 楼
布尔值可能比布尔值“轻”些。有趣的是,将其更改为: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而不是布尔值。使用系统;之所以出现,是因为它允许将布尔值正确解释为System.Boolean。并不是真的那么轻,而是更不那么冗长。
–纳特
20 May 14'9:31
评论
从上面的链接中,微软说C#类型关键字及其别名是可互换的,但是为什么我们需要别名,从我的角度来看,布尔值比bool更有意义,而int32则比int更有意义,然后为什么要别名???
–阿西姆·塞贾德(Asim Sajjad)
10 Mar 18 '10在11:39
@asim:懒惰?它减少了键入,并避免了导入System的需要。就个人而言,我更喜欢别名。键入“ int”比键入“ Int32”要快得多。
–肯特·布加特(Kent Boogaart)
10 Mar 18 '10 at 13:47
@asmin:这是C的东西。 int,float等是C和C ++程序员熟悉的关键字,因此Microsoft决定使用这些别名以保持一致性。
–迈克·张伯伦
2011年2月3日,下午1:34
@Mikey我非常确定Java决定使用这些别名来保持一致性,而Microsoft决定使用Java来保持一致性... :-)
–max
2011年8月19日下午14:07
@MaxWell在Java中,布尔值和布尔值不是同一回事。一种是原始数据类型,另一种是对象。
– Rosdi Kasim
13年3月28日在4:42