В чем разница между типами bool и Boolean в C#
Вопрос
В чем разница между bool
и Boolean
типы на С#?
Решение
bool
это псевдоним для System.Boolean
как только int
это псевдоним для System.Int32
.Полный список псевдонимов смотрите здесь: Таблица встроенных типов (Справочник по C#).
Другие советы
Я не верю, что он существует.
bool
это просто псевдоним для System.Boolean
Они одно и то же.bool — это просто псевдоним для Boolean.
Нет никакой разницы: bool — это просто псевдоним System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Я понимаю, что это произошло много лет спустя, но я наткнулся на эту страницу в Google с тем же вопросом.
На данный момент на странице MSDN есть одно незначительное отличие.
ВС2005
Примечание:
Если вам требуется логическая переменная, которая также может иметь значение null, используйте bool.Дополнительные сведения см. в разделе Типы, допускающие значение NULL (Руководство по программированию на C#).
ВС2010
Примечание:
Если вам требуется логическая переменная, которая также может иметь значение null, используйте bool?.Дополнительные сведения см. в разделе Типы, допускающие значение NULL (Руководство по программированию на C#).
Они одинаковые.Boolean помогает упростить преобразование между C# и VB.Net.Большинство программистов C# предпочитают bool, но если вы находитесь в магазине, где много как VB.Net, так и C#, то вы можете предпочесть Boolean, потому что он работает в обоих местах.
Одно является псевдонимом другого.
Как уже было сказано, они одинаковы.Их два, потому что bool — это ключевое слово C#, а Boolean — класс .Net.
bool — это псевдоним класса Boolean.Я использую псевдоним при объявлении переменной и имя класса при вызове метода класса.
Они одинаковы, Bool — это просто сокращенный System.Boolean.Используйте Boolean, когда вы работаете с программистом VB.net, поскольку он работает как с C#, так и с Vb.
Обратите внимание, что Boolean
будет работать только если у вас есть using System;
(который обычно, но не обязательно, включается) (если только вы не запишете его как System.Boolean
). bool
не нужно using System;
bool — это примитивный тип, означающий, что значение (в данном случае true/false) сохраняется непосредственно в переменной.Логическое значение — это объект.Переменная типа Boolean хранит ссылку на логический объект.Единственная реальная разница — это место хранения.Объект всегда будет занимать больше памяти, чем объект примитивного типа, но на самом деле изменение всех ваших логических значений на bool не окажет заметного влияния на использование памяти.
Я был неправ;вот как это работает в Java с логическими значениями и логическими значениями.В C# bool и Boolean являются ссылочными типами.Оба они сохраняют свое значение непосредственно в переменной, оба не могут быть нулевыми, и оба требуют метода «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» привели к тому, что волосы использования пункта стали серыми.
(Visual Studio 2010, проект WebAPI)
bool — это псевдоним логического значения.Псевдонимы заменяют одну строку текста другой (например, search/replace-all в notepad++) непосредственно перед компиляцией кода.Использование одного над другим не имеет никакого эффекта во время выполнения.
В большинстве других языков один из них будет примитивным типом, а другой — типом объекта (тип значения и ссылочный тип на жаргоне C#).C# не дает вам возможности выбирать между ними.Когда вы хотите вызвать статический метод, определенный в классе Boolean, он автоматически воспринимает Boolean как ссылочный тип.Если вы создаете новую логическую переменную, она автоматически воспринимает ее как ссылочный тип (если вы не используете метод Activator.CreateInstance).