393 Stimmen

Was ist der Unterschied zwischen bool und Boolean Typen in C#

Was ist der Unterschied zwischen bool y Boolean Typen in C#?

2voto

James Curran Punkte 98228

Beachten Sie, dass Boolean funktioniert nur, wenn Sie über using System; (das normalerweise, aber nicht unbedingt, enthalten ist) (es sei denn, Sie schreiben es als System.Boolean ). bool braucht nicht using System;

2voto

Nate Punkte 37

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.

1voto

Stefanos Zilellis Punkte 515

Kein wirklicher Unterschied, es sei denn, Sie erhalten den Typ string. Wenn Sie dort reflection oder GetType() verwenden, erhalten Sie {Name = "Boolean" FullName = "System.Boolean"} für beide.

-1voto

Michael Kaldwid Punkte 62

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).

-2voto

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)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X