Jaka jest różnica między bool
i Boolean
typów w C #?
338
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
iBoolean
to nie to samo. Jeden jest pierwotnym typem danych, a drugi jest obiektem.Nie wierzę, że istnieje.
bool
jest tylko pseudonimem dlaSystem.Boolean
źródło
Są jednym w tym samym. bool to tylko alias Boolean.
źródło
Nie ma różnicy - bool to po prostu alias System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
źródło
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
VS2010
źródło
bool
może zawierać zero, aleBoolean
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.
źródło
Jak już powiedziano, są takie same. Są dwa, ponieważ bool jest słowem kluczowym C #, a Boolean klasą .Net.
źródło
Jeden to pseudonim dla drugiego.
źródło
bool to alias dla klasy Boolean. Używam aliasu, kiedy deklaruję zmienną, i nazwy klasy, gdy wywołujemy metodę w klasie.
źródło
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
źródło
Zauważ, że
Boolean
zadziała tylko wtedy, gdy maszusing System;
(co zwykle jest, ale niekoniecznie, uwzględnione) (chyba że wypiszesz to jakoSystem.Boolean
).bool
nie potrzebujeusing System;
źródło
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.
źródło
bool
iBoolean
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
iBoolean
oba są typami referencyjnymi”. Słowabool
iBoolean
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).
źródło
Być może bool jest odrobinę „lżejszy” niż Boolean; Co ciekawe, zmieniając to:
...do tego:
... 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)
źródło
System.Boolean
raczej niż tylkoBoolean
.using System;
Pokazywał, bo to pozwoliłoBoolean
być prawidłowo interpretowane jakoSystem.Boolean
. Nie tak naprawdę lżejsze niż tylko mniej gadatliwe.