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