【问题标题】:What is the difference between bool and Boolean types in C#C#中的布尔类型和布尔类型有什么区别
【发布时间】:2010-09-13 04:20:12
【问题描述】:

C#中boolBoolean类型有什么区别?

【问题讨论】:

    标签: c# types boolean


    【解决方案1】:

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

    【讨论】:

    • 从上面的链接微软说 C# 类型的关键字和它们的别名是可以互换的但是为什么我们需要别名,从我的角度来看,布尔比布尔更有意义,而 Int32 比 int 更有意义,然后为什么别名???
    • @asim:懒惰?它减少了打字并且避免了导入 System.就个人而言,我更喜欢别名。键入“int”比键入“Int32”要快得多。
    • @asmin:这是一个 C 的东西。 int、float 等是 C 和 C++ 程序员熟悉的关键字,因此 Microsoft 决定使用这些别名以保持一致性。
    • @Mikey 我很确定 Java 决定使用这些别名来保持一致性,而 Microsoft 决定使用 Java 来保持一致性...... :-)
    • @MaxWell 在 Java 中,booleanBoolean 不是一回事。一种是原始数据类型,另一种是对象。
    【解决方案2】:

    我不相信有一个。

    bool 只是System.Boolean 的别名

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

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

          VS2005

          注意:

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

          VS2010

          注意:

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

          【讨论】:

          • 我被这个绊倒了——这似乎是文档中的一个错误。我首先看到了 VS2005 页面(它在我的 Google 排名中似乎更高!),并认为它暗示 bool 可以包含 null,但 Boolean 不能。尽管有一个从旧文档到新文档的链接,但我没有仔细阅读新文档以注意到单个 ? 的区别。
          • @Timothy Macharia 谁/哪里出了问题? “转为空”是什么意思?
          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 那么对于跨平台兼容性来说,bool 不是更好吗?
            【解决方案8】:

            一个是另一个的别名。

            【讨论】:

              【解决方案9】:

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

              【讨论】:

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

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

              【讨论】:

                【解决方案11】:

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

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

                【讨论】:

                • boolBoolean 不是两种不同的类型,一种类型不是引用类型,您可以使用任一标识符对该 one 类型调用静态方法,实际上你不需要调用ConvertTo 方法来将其转换为另一种类型。
                • boolBoolean 都是引用类型”是不正确的。 boolBoolean 这两个词都指向同一个类型,并且该类型是值类型,而不是引用类型。
                • 谢谢,我试图检查 C# 在该领域的行为是否与 java 相同。您的回答是唯一将其与 java 进行比较的答案(即使可能不是故意的)。 :)
                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

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

                  【讨论】:

                    【解决方案14】:

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

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

                    【讨论】:

                    • Boolean 是值类型,不是引用类型。
                    【解决方案15】:

                    也许 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 而不仅仅是Booleanusing System; 之所以出现,是因为它允许将 Boolean 正确解释为 System.Boolean。与其说是更简单,不如说是更简洁。
                    猜你喜欢
                    • 2011-05-30
                    • 2010-11-13
                    • 2013-04-26
                    • 2018-02-14
                    • 2011-03-27
                    • 2010-11-20
                    • 2023-04-10
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多