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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
351
0
191 510
15
Перейти к ответу Данный вопрос помечен как решенный

Ответы 15

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

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

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

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

Ответ принят как подходящий

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

Из приведенной выше ссылки Microsoft говорит, что ключевые слова типа C# и их псевдонимы взаимозаменяемы Но зачем нам нужны псевдонимы, с моей точки зрения Boolean более значим, чем bool, а Int32 более значим, чем int, тогда почему псевдонимы ???

Asim Sajjad 18.03.2010 14:39

@asim: лень? Он меньше печатает и избавляет от необходимости импортировать System. Лично я предпочитаю псевдонимы. Ввод «int» намного быстрее, чем «Int32».

Kent Boogaart 18.03.2010 16:47

@asmin: Это вещь C. int, float и т. д. - ключевые слова, знакомые программистам на C и C++, поэтому Microsoft решила использовать эти псевдонимы для единообразия.

Mike Chamberlain 03.02.2011 04:34

@Mikey Я почти уверен, что Java решила использовать эти псевдонимы для согласованности, а Microsoft решила использовать Java для согласованности ... :-)

max 19.08.2011 18:07

@MaxWell В Java boolean и Boolean - это не одно и то же. Один - это примитивный тип данных, а другой - объект.

Rosdi Kasim 28.03.2013 08:42

да, я знаю, я просто пошутил.

max 06.04.2013 01:36

Этот псевдоним вызвал у меня проблему. Я использую bool, потому что думал, что это «правильный» тип, но потом я запутался, почему мой «bool» MVC DisplayTemplate не срабатывает. Оказывается, мне нужно назвать его логическим. Если бы я понял, что Boolean был официальным типом, а bool был просто псевдонимом для удобства, я бы использовал Boolean с самого начала.

Michael12345 31.01.2014 03:43

В чем разница между Bool и bool?

Legends 17.06.2020 22:19

Недурно, потому что это не дает ответа на вопрос, в чем разница.

bakalolo 27.02.2021 06:42

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

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

Так не лучше ли bool для кроссплатформенной совместимости?

Beep beep 11.03.2009 07:11

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

Ради интереса - зачем использовать оба? Я рекомендую использовать одно или другое. Либо используйте псевдонимы, либо не используйте, иначе код будет выглядеть беспорядочно и непоследовательно.

Kent Boogaart 25.09.2008 21:42

Я думаю, что это выглядит беспорядочно, когда вы не используете оба. Используйте псевдоним для объявления типа данных и имя класса actall при доступе к статическим методам: string x = String.Format («Сегодня: {0}», DateTime.Now);

Scott Dorman 25.09.2008 21:49

Итак, вы бы сделали: int i = Int32.Parse (...); ? У меня с этим есть пара проблем. Во-первых, VS по умолчанию будет выделять по-другому (я знаю, что вы можете это изменить, но большинство разработчиков просто используют подсветку синтаксиса по умолчанию). Во-вторых, поиск сложнее, особенно с длинными (long / Int64).

Kent Boogaart 25.09.2008 22:20

Да, именно так это и должно быть сделано. int - это не имя класса, вы не должны вызывать для него методы. С другой стороны, это встроенный тип, определяющий Int32 i; слишком многословен и неестественен.

AviD 25.09.2008 23:14

смешение псевдонимов и имен классов ничего не добавляет к ясности кода. Выберите один и придерживайтесь его, имхо

Arne Claassen 10.09.2009 02:07

Я согласился с комментарием Кента Бугарта. Да, int i = Int32.Parse странно. Но для пользователя java использование псевдонима bool и boolean при объявлении класса Boolean - неплохая идея.

Choi 29.05.2019 10:55

Нет никакой разницы - bool - это просто псевдоним System.Boolean.

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

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

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

VS2005

Note:

If you require a Boolean variable that can also have a value of null, use bool. For more information, see Nullable Types (C# Programming Guide).

VS2010

Note:

If you require a Boolean variable that can also have a value of null, use bool?. For more information, see Nullable Types (C# Programming Guide).

Меня это сбило с толку - похоже, это ошибка в документации. Сначала я увидел страницу VS2005 (она кажется мне выше в рейтинге Google!) И подумал, что это подразумевает, что bool может содержать null, а Boolean - нет. Несмотря на то, что есть ссылка на более старую документацию, я недостаточно внимательно прочитал новую документацию, чтобы заметить единственное отличие ?.

Logan Pickup 27.10.2015 23:16

@ Тимоти Махария Кто / что не так? Что означает «преобразовать в нуль»?

The incredible Jan 16.12.2020 11:28

Возможно, 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" волосы в предложении using поседели.

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

Это System.Boolean, а не просто Boolean. using System; появился, потому что он позволял правильно интерпретировать Boolean как System.Boolean. Не столько легче, сколько менее многословно.

Nat 14.05.2020 12:31

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

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

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

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

bool и Boolean - это не два разных типа, один тип не является ссылочным типом, вы можете вызвать статический метод для этого типа один, используя любой из идентификаторов, и вам фактически не нужно вызывать метод ConvertTo для его преобразования в другой. тип.

Servy 05.08.2016 20:59

Неправильно, что «bool и Boolean являются ссылочными типами». Слова bool и Boolean относятся к одному и тому же типу, и этот тип является типом значения, а не ссылочным типом.

Tanner Swett 29.01.2017 21:04

Спасибо, я пытался проверить, действует ли C# так же, как java в этом поле. Ваш ответ - единственный, который сравнивает его с java (хотя, может быть, и не намеренно). :)

bvdb 08.02.2017 17:38

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

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

Boolean - это тип значения, а не ссылочный тип.

Servy 05.08.2016 23:30

Никакой реальной разницы, если вы не получите строку типа. Там, когда вы используете отражение или GetType (), вы получаете {Name = "Boolean" FullName = "System.Boolean"} для обоих.

Другие вопросы по теме