Яка різниця між типами 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 - це ключове слово C #, а Boolean - клас .Net.
bool - псевдонім для булевого класу. Я використовую псевдонім при оголошенні змінної та імені класу при виклику методу для класу.
Вони однакові, Bool просто System.Boolean скорочений. Використовуйте Boolean, коли ви працюєте з програмістом VB.net, оскільки він працює як з C #, так і з Vb
Зауважте, що Boolean
ви працюєте лише у вас using System;
(які зазвичай, але необов'язково, включені) (якщо ви не виписуєте це як System.Boolean
). bool
не потребуєusing System;
bool - це примітивний тип, тобто значення (справжнє / хибне в даному випадку) зберігається безпосередньо у змінній. Булев - об’єкт. Змінна типу Boolean зберігає посилання на булевий об'єкт. Єдина реальна відмінність - це зберігання. Об'єкт завжди займе більше пам'яті, ніж примітивний тип, але насправді зміна всіх ваших булевих значень на bool не матиме помітного впливу на використання пам'яті.
Я був неправий; ось як це працює в java з boolean та boolean. У C #, bool і Boolean - обидва еталонні типи. Обидва вони зберігають своє значення безпосередньо у змінній, обидва вони не можуть бути нульовими, і для обох потрібен метод "converTO", щоб зберігати свої значення в іншому типі (наприклад, int). Має значення лише те, яким ви користуєтесь, якщо вам потрібно викликати статичну функцію, визначену в булевому класі.
bool
а Boolean
не два різних типи, що один тип не є посилальним типом, ви можете викликати статичний метод з цього одному типу , використовуючи або ідентифікатор, і ви не насправді потрібно викликати ConvertTo
метод , щоб перетворити його в інший тип.
bool
і Boolean
обидва типи посилань". Слова bool
і Boolean
обидва позначають один і той же тип, і цей тип є типом значення, а не типом посилання.
bool - псевдонім для Boolean. Псевдоніми - це замінити один рядок тексту на інший (наприклад, пошук / заміна-все в блокноті ++), безпосередньо перед тим, як скомпілювати код. Використання одного над іншим не впливає на час виконання.
У більшості інших мов один був би примітивним типом, а другий - типом об’єкта (тип значення та тип посилань на жаргоні C #). C # не дає вам можливості вибору між двома. Коли ви хочете викликати статичний метод, визначений в булевому класі, він автоматично магічно розглядає булеві як еталонний тип. Якщо ви створюєте нову змінну Boolean, вона автоматично магічно розглядає її як тип посилання (якщо ви не використовуєте метод Activator.CreateInstance).
Можливо, бул - це "легше", ніж булеве; Цікаво, що змінивши це:
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)
System.Boolean
швидше, ніж просто Boolean
. Показ using System;
відображався, тому що це дозволяло Boolean
правильно інтерпретувати як System.Boolean
. Насправді не легший настільки, як просто менш багатослівний.