Jaka jest różnica między booli Booleantypów w C #?
Jaka jest różnica między booli Booleantypów w C #?
Odpowiedzi:
booljest pseudonimem, System.Booleanpodobnie jak intpseudonim System.Int32. Zobacz pełną listę aliasów tutaj: Tabela typów wbudowanych (C # Reference) .
booleani Booleanto 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 #).
boolmoże zawierać zero, ale Booleannie 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 Booleanzadziała tylko wtedy, gdy masz using System;(co zwykle jest, ale niekoniecznie, uwzględnione) (chyba że wypiszesz to jako System.Boolean). boolnie 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.
booli Booleannie 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ć ConvertTometody, aby przekonwertować ją na inny typ.
booli Booleanoba są typami referencyjnymi”. Słowa booli Booleanoba 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.Booleanraczej niż tylko Boolean. using System;Pokazywał, bo to pozwoliło Booleanbyć prawidłowo interpretowane jako System.Boolean. Nie tak naprawdę lżejsze niż tylko mniej gadatliwe.