В чем разница между типами bool и Boolean в C#

в чем разница между bool и Boolean типы В C#?

14 ответов


bool псевдоним System.Boolean как int псевдоним System.Int32. Смотрите полный список псевдонимов здесь:Встроенная Таблица Типов (Справочник По C#).


Я не верю, что он есть.

bool - Это просто псевдоним для System.Boolean


Они являются одним и тем же. bool - это просто псевдоним для Boolean.


нет никакой разницы - bool - это просто псевдоним системы.Логический.

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


Я понимаю, что это много лет спустя, но я наткнулся на эту страницу от Google с тем же вопросом.

есть одно незначительное различие на странице MSDN на данный момент.

VS2005

Примечание:

Если требуется логическая переменная, которая также может иметь значение null, используйте bool. Дополнительные сведения см. В разделе Nullable Types (руководство по программированию на C#).

VS2010

Примечание:

Если вам требуется логическая переменная, которая также может иметь значение null, используйте bool?. Дополнительные сведения см. В разделе Nullable Types (руководство по программированию на C#).


они одинаковы. Boolean помогает упростить преобразование между C# и VB.Net - ... Большинство программистов на C# предпочитают "bool", но если вы находитесь в магазине, где есть много обоих VB.Net и C# тогда вы можете предпочесть Boolean, потому что он работает в обоих местах.


один псевдоним для других.


Как уже было сказано, они такие же. Существует два, потому что bool-это ключевое слово C# и Boolean-класс .Net.


bool-это псевдоним для класса Boolean. Я использовать псевдоним при объявлении переменной и имя класса при вызове метода класса.


они одинаковы, Bool-это просто система.Булеан укоротился. Используйте Boolean, когда вы с VB.net программист, так как он работает как с C#, так и с VB


отметим, что Boolean будет работать только у вас using System; (который обычно, но не обязательно, включен) (если вы не напишите его как System.Boolean). bool не нужны using System;


bool является примитивным типом, что означает, что значение (true/false в этом случае) хранится непосредственно в переменной. Boolean-это объект. Переменная типа Boolean хранит ссылку на объект Boolean. Единственная реальная разница-хранение. Объект всегда будет занимать больше памяти, чем примитивный тип, но на самом деле изменение всех ваших логических значений на bool не окажет заметного влияния на использование памяти.

Я ошибался, Вот как это работает в java с boolean и Boolean. В C# bool и Boolean являются ссылочными типами. Оба они хранят свое значение непосредственно в переменной, оба они не могут быть null, и оба они требуют метода "convertTO" для хранения своих значений в другом типе (например, int). Важно только, какой из них вы используете, если вам нужно вызвать статическую функцию, определенную в классе Boolean.


возможно, bool немного "легче", чем Boolean; интересно, изменив это:

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)


bool-это псевдоним для Boolean. Псевдонимы заменяют одну строку текста другой (например, search / replace-all в notepad++) непосредственно перед компиляцией кода. С помощью одного над другим не имеет никакого эффекта во время выполнения.

в большинстве других языков один будет примитивным типом, а другой-типом объекта (тип значения и ссылочный тип на жаргоне C#). C# не дает вам возможности выбирать между ними. Когда вы хотите вызвать статический метод, определенный в Boolean class, он автоматически магически обрабатывает Boolean как ссылочный тип. Если вы создаете новую булеву переменную, она автоматически обрабатывает ее как ссылочный тип (если вы не используете активатор.Метод CreateInstance).