Was ist der Unterschied zwischen bool
y Boolean
Typen in C#?
Antworten
Zu viele Anzeigen?bool ist ein primitiver Typ, was bedeutet, dass der Wert (in diesem Fall wahr/falsch) direkt in der Variablen gespeichert wird. Boolean ist ein Objekt. Eine Variable vom Typ Boolean speichert einen Verweis auf ein Boolean-Objekt. Der einzige wirkliche Unterschied ist der Speicherplatz. Ein Objekt benötigt immer mehr Speicher als ein primitiver Typ, aber in der Realität wird die Änderung aller booleschen Werte in bool keine spürbaren Auswirkungen auf die Speichernutzung haben.
Ich habe mich geirrt; so funktioniert es in Java mit boolean und Boolean. In C# sind bool und Boolean beides Referenztypen. Beide speichern ihren Wert direkt in der Variablen, beide können nicht null sein, und beide erfordern eine "convertTO"-Methode, um ihre Werte in einem anderen Typ (wie int) zu speichern. Es ist nur von Bedeutung, welchen Typ Sie verwenden, wenn Sie eine statische Funktion aufrufen müssen, die innerhalb der Boolean-Klasse definiert ist.
Bool ist ein Alias für Boolean. Mit Aliasen wird eine Textzeichenfolge durch eine andere ersetzt (wie search/replace-all in notepad++), bevor der Code kompiliert wird. Die Verwendung eines Alias für einen anderen hat keine Auswirkungen auf die Laufzeit.
In den meisten anderen Sprachen wäre das eine ein primitiver Typ und das andere ein Objekttyp (Werttyp und Referenztyp im C#-Jargon). C# gibt Ihnen nicht die Möglichkeit, zwischen den beiden zu wählen. Wenn Sie eine statische Methode aufrufen möchten, die in der Klasse Boolean definiert ist, wird Boolean automatisch als Referenztyp behandelt. Wenn Sie eine neue Boolean-Variable erstellen, wird diese automatisch als Referenztyp behandelt (es sei denn, Sie verwenden die Methode Activator.CreateInstance).
Vielleicht ist bool ein bisschen "leichter" als Boolean; interessanterweise wird dies geändert:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...zu diesem:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
...führte dazu, dass in meiner cs-Datei ein "using System;" auftauchte. Das Ändern des Typs zurück zu "bool" führte dazu, dass die Haare der using-Klausel grau wurden.
(Visual Studio 2010, WebAPI-Projekt)
- See previous answers
- Weitere Antworten anzeigen