Was ist der Unterschied zwischen boolund BooleanTypen in C #?
Was ist der Unterschied zwischen boolund BooleanTypen in C #?
Antworten:
boolist ein Alias für System.Booleangenauso wie intein Alias für System.Int32. Eine vollständige Liste der Aliase finden Sie hier: Tabelle der integrierten Typen (C # -Referenz) .
booleanund Booleanist nicht das gleiche. Einer ist ein primitiver Datentyp und der andere ist ein Objekt.
Es gibt keinen Unterschied - bool ist einfach ein Alias von System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Mir ist klar, dass dies viele Jahre später ist, aber ich bin mit der gleichen Frage auf diese Seite von Google gestoßen.
Auf der MSDN-Seite gibt es ab sofort einen kleinen Unterschied.
VS2005
Hinweis:
Wenn Sie eine boolesche Variable benötigen, die auch den Wert null haben kann, verwenden Sie bool. Weitere Informationen finden Sie unter Nullable Types (C # -Programmierhandbuch).
VS2010
Hinweis:
Wenn Sie eine boolesche Variable benötigen, die auch den Wert null haben kann, verwenden Sie bool?. Weitere Informationen finden Sie unter Nullable Types (C # -Programmierhandbuch).
boolsie null enthalten könnte, aber Booleannicht. Obwohl es einen Link von der älteren zur neueren Dokumentation gibt, habe ich die neuere Dokumentation nicht gründlich genug gelesen, um den einzigen ?Unterschied zu bemerken .
Sie sind gleich. Boolean vereinfacht das Hin- und Herkonvertieren zwischen C # und VB.Net. Die meisten C # -Programmierer bevorzugen 'bool', aber wenn Sie in einem Geschäft sind, in dem es sowohl VB.Net als auch C # gibt, bevorzugen Sie möglicherweise Boolean, da es an beiden Orten funktioniert.
bool ist ein Alias für die Boolesche Klasse. Ich verwende den Alias beim Deklarieren einer Variablen und den Klassennamen beim Aufrufen einer Methode für die Klasse.
Sie sind die gleichen, Bool ist nur System.Boolean verkürzt. Verwenden Sie Boolean, wenn Sie mit einem VB.net-Programmierer arbeiten, da dieser sowohl mit C # als auch mit Vb funktioniert
Beachten Sie, dass dies Booleannur funktioniert using System;, wenn Sie es haben (was normalerweise, aber nicht unbedingt enthalten ist) (es sei denn, Sie schreiben es als System.Boolean). boolbraucht nichtusing System;
bool ist ein primitiver Typ, dh der Wert (in diesem Fall true / false) wird direkt in der Variablen gespeichert. Boolean ist ein Objekt. Eine Variable vom Typ Boolean speichert einen Verweis auf ein Boolesches Objekt. Der einzige wirkliche Unterschied ist die Lagerung. Ein Objekt belegt immer mehr Speicher als ein primitiver Typ, aber in Wirklichkeit hat das Ändern aller Ihrer Booleschen Werte in Bool keine spürbaren Auswirkungen auf die Speichernutzung.
Ich lag falsch; So funktioniert es in Java mit Boolean und Boolean. In C # sind Bool und Boolean beide Referenztypen. Beide speichern ihren Wert direkt in der Variablen, beide dürfen nicht null sein, und beide benötigen eine "convertTO" -Methode, um ihre Werte in einem anderen Typ (z. B. int) zu speichern. Es ist nur wichtig, welche Sie verwenden, wenn Sie eine statische Funktion aufrufen müssen, die in der Booleschen Klasse definiert ist.
boolund Booleansind nicht zwei verschiedene Typen, dass ein Typ kein Referenztyp ist, können Sie eine statische Methode für diesen einen Typ unter Verwendung eines der beiden Bezeichner aufrufen, und Sie müssen tatsächlich keine ConvertToMethode aufrufen , um sie in einen anderen Typ zu konvertieren.
boolund Booleanbeide Referenztypen sind". Die Wörter boolund Booleanbeide beziehen sich auf denselben Typ, und dieser Typ ist ein Werttyp, kein Referenztyp.
bool ist ein Alias für Boolean. Aliase ersetzen eine Textzeichenfolge durch eine andere (wie Search / Replace-All in Notepad ++), kurz bevor der Code kompiliert wird. Die Verwendung übereinander hat zur Laufzeit keine Auswirkung.
In den meisten anderen Sprachen wäre eine ein primitiver Typ und die andere ein Objekttyp (Werttyp und Referenztyp im C # -Jargon). C # bietet Ihnen nicht die Möglichkeit, zwischen beiden zu wählen. Wenn Sie eine statische Methode aufrufen möchten, die in der Booleschen Klasse definiert ist, wird Boolescher Wert automatisch als Referenztyp behandelt. Wenn Sie eine neue boolesche Variable erstellen, wird sie automatisch als Referenztyp behandelt (es sei denn, Sie verwenden die Activator.CreateInstance-Methode).
Vielleicht ist Bool ein bisschen "leichter" als Boolean; Interessanterweise ändert dies:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
... dazu:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... hat dazu geführt, dass aus meiner CS-Datei ein "using System" hervorgegangen ist. Wenn Sie den Typ wieder auf "bool" ändern, werden die Haare der using-Klausel grau.
(Visual Studio 2010, WebAPI-Projekt)
System.Booleaneher als nur Boolean. Das using System;wurde angezeigt, weil es Booleanrichtig interpretiert werden durfte als System.Boolean. Nicht wirklich leichter als nur weniger ausführlich.