Jaka jest różnica między bool
i Boolean
typów w C #?
Jaka jest różnica między bool
i Boolean
typów w C #?
Odpowiedzi:
bool
jest pseudonimem, System.Boolean
podobnie jak int
pseudonim System.Int32
. Zobacz pełną listę aliasów tutaj: Tabela typów wbudowanych (C # Reference) .
boolean
i Boolean
to nie to samo. Jeden jest pierwotnym typem danych, a drugi jest obiektem.
Nie ma różnicy - bool to po prostu alias System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Zdaję sobie sprawę, że jest to wiele lat później, ale natknąłem się na tę stronę od Google z tym samym pytaniem.
Obecnie na stronie MSDN istnieje niewielka różnica.
VS2005
Uwaga:
Jeśli potrzebujesz zmiennej boolowskiej, która może mieć również wartość null, użyj bool. Aby uzyskać więcej informacji, zobacz Typy dopuszczające wartości zerowe (Podręcznik programowania w języku C #).
VS2010
Uwaga:
Jeśli potrzebujesz zmiennej boolowskiej, która może mieć również wartość null, użyj bool ?. Aby uzyskać więcej informacji, zobacz Typy dopuszczające wartości zerowe (Podręcznik programowania w języku C #).
bool
może zawierać zero, ale Boolean
nie może. Mimo że istnieje link ze starszej do nowszej dokumentacji, nie przeczytałem nowszej dokumentacji wystarczająco dokładnie, aby zauważyć pojedynczą ?
różnicę.
Oni są tacy sami. Boolean pomaga uprościć konwersję w obie strony między C # i VB.Net. Większość programistów C # woli „bool”, ale jeśli jesteś w sklepie, w którym jest dużo zarówno VB.Net, jak i C #, możesz wybrać Boolean, ponieważ działa w obu miejscach.
Jak już powiedziano, są takie same. Są dwa, ponieważ bool jest słowem kluczowym C #, a Boolean klasą .Net.
bool to alias dla klasy Boolean. Używam aliasu, kiedy deklaruję zmienną, i nazwy klasy, gdy wywołujemy metodę w klasie.
Są takie same, Bool jest po prostu Systemem. Boolean został skrócony. Użyj Boolean, gdy pracujesz z programistą VB.net, ponieważ działa on zarówno z C #, jak i Vb
Zauważ, że Boolean
zadziała tylko wtedy, gdy masz using System;
(co zwykle jest, ale niekoniecznie, uwzględnione) (chyba że wypiszesz to jako System.Boolean
). bool
nie potrzebujeusing System;
bool jest typem pierwotnym, co oznacza, że wartość (w tym przypadku prawda / fałsz) jest przechowywana bezpośrednio w zmiennej. Boolean to obiekt. Zmienna typu Boolean przechowuje odwołanie do obiektu Boolean. Jedyną prawdziwą różnicą jest przechowywanie. Obiekt zawsze zajmuje więcej pamięci niż typ pierwotny, ale w rzeczywistości zmiana wszystkich wartości logicznych na bool nie będzie miała zauważalnego wpływu na użycie pamięci.
Myliłem się; tak to działa w Javie z logicznymi i logicznymi. W języku C #, bool i Boolean są typami referencyjnymi. Oba przechowują swoją wartość bezpośrednio w zmiennej, oba nie mogą mieć wartości NULL i oba wymagają metody „convertTO” do przechowywania swoich wartości w innym typie (np. Int). Liczy się tylko to, którego używasz, jeśli chcesz wywołać funkcję statyczną zdefiniowaną w klasie Boolean.
bool
i Boolean
nie są to dwa różne typy, ten jeden typ nie jest typem referencyjnym, możesz wywołać metodę statyczną na tym jednym typie, używając dowolnego identyfikatora, i tak naprawdę nie musisz wywoływać ConvertTo
metody, aby przekonwertować ją na inny typ.
bool
i Boolean
oba są typami referencyjnymi”. Słowa bool
i Boolean
oba odnoszą się do tego samego typu, a ten typ jest typem wartości, a nie typem referencyjnym.
bool to alias Boolean. Aliasy zastępują jeden ciąg tekstu innym (np. Wyszukaj / zamień wszystko w Notatniku ++), tuż przed skompilowaniem kodu. Używanie jednego nad drugim nie ma wpływu w czasie wykonywania.
W większości innych języków jeden byłby typem pierwotnym, a drugi typem obiektu (typ wartości i typ odwołania w żargonie C #). C # nie daje możliwości wyboru między tymi dwoma. Kiedy chcesz wywołać metodę statyczną zdefiniowaną w klasie Boolean, automatycznie traktuje Boolean jako typ odwołania. Jeśli utworzysz nową zmienną logiczną, automatycznie traktuje ją jako typ odwołania (chyba że użyjesz metody Activator.CreateInstance).
Być może bool jest odrobinę „lżejszy” niż Boolean; Co ciekawe, zmieniając to:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...do tego:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... spowodowało, że mój plik cs wyrósł „przy użyciu systemu;” Zmiana typu z powrotem na „bool” spowodowała, że włosy klauzuli używającej stały się siwe.
(Visual Studio 2010, projekt WebAPI)
System.Boolean
raczej niż tylko Boolean
. using System;
Pokazywał, bo to pozwoliło Boolean
być prawidłowo interpretowane jako System.Boolean
. Nie tak naprawdę lżejsze niż tylko mniej gadatliwe.