В чем разница между типами bool и Boolean в C # - PullRequest
311 голосов
/ 25 сентября 2008

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

Ответы [ 14 ]

1 голос
/ 04 августа 2014

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

0 голосов
/ 05 августа 2016

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

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

0 голосов
/ 05 августа 2016

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

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

0 голосов
/ 08 октября 2013

Возможно, 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-файл вызвал "using System"; Смена типа обратно на «bool» привела к тому, что волосы оператора использования стали серыми.

(Visual Studio 2010, проект WebAPI)

...