Qual è la differenza tra bool
e Boolean
tipi in C #?
Qual è la differenza tra bool
e Boolean
tipi in C #?
Risposte:
bool
è un alias System.Boolean
proprio come int
è un alias per System.Int32
. Consulta un elenco completo di alias qui: Tabella dei tipi predefiniti (Riferimenti per C #) .
boolean
e Boolean
non è la stessa cosa. Uno è un tipo di dati primitivo e l'altro è un oggetto.
Non c'è differenza: bool è semplicemente un alias di System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Mi rendo conto che è successo molti anni dopo, ma mi sono imbattuto in questa pagina da Google con la stessa domanda.
Al momento esiste una differenza minore sulla pagina MSDN.
VS2005
Nota:
Se hai bisogno di una variabile booleana che può anche avere un valore null, usa bool. Per ulteriori informazioni, consultare Tipi nullabili (Guida per programmatori C #).
VS2010
Nota:
Se hai bisogno di una variabile booleana che può anche avere un valore null, usa bool ?. Per ulteriori informazioni, consultare Tipi nullabili (Guida per programmatori C #).
bool
potesse contenere null, ma Boolean
non poteva. Anche se esiste un collegamento tra la documentazione più vecchia e quella più recente, non ho letto la documentazione più recente abbastanza da notare la singola ?
differenza.
Loro sono la stessa cosa. Boolean aiuta a semplificare la conversione avanti e indietro tra C # e VB.Net. La maggior parte dei programmatori C # tende a preferire "bool", ma se ti trovi in un negozio in cui ci sono molti VB.Net e C #, potresti preferire Boolean perché funziona in entrambi i posti.
bool è un alias per la classe booleana. Uso l'alias quando dichiaro una variabile e il nome della classe quando chiamo un metodo sulla classe.
Sono uguali, Bool è solo System.Boolean abbreviato. Usa Boolean quando sei con un programmatore VB.net, poiché funziona con C # e Vb
Nota che Boolean
funzionerà solo se lo hai using System;
(che di solito è, ma non necessariamente, incluso) (a meno che non lo scrivi come System.Boolean
). bool
non ha bisognousing System;
bool è un tipo primitivo, nel senso che il valore (vero / falso in questo caso) è memorizzato direttamente nella variabile. Boolean è un oggetto. Una variabile di tipo booleano memorizza un riferimento a un oggetto booleano. L'unica vera differenza è l'archiviazione. Un oggetto occuperà sempre più memoria di un tipo primitivo, ma in realtà, la modifica di tutti i valori booleani in booleare non avrà alcun impatto evidente sull'uso della memoria.
Mi sbagliavo; è così che funziona in java con booleano e booleano. In C #, bool e Boolean sono entrambi tipi di riferimento. Entrambi memorizzano il loro valore direttamente nella variabile, entrambi non possono essere nulli ed entrambi richiedono un metodo "convertTO" per memorizzare i loro valori in un altro tipo (come int). Importa solo quale si utilizza se è necessario chiamare una funzione statica definita all'interno della classe booleana.
bool
e Boolean
non sono di due tipi diversi, che un tipo non è un tipo di riferimento, è possibile chiamare un metodo statico su quel un tipo utilizzando identificatore, e non lo fai, infatti, bisogno di chiamare un ConvertTo
metodo per convertirlo in un altro tipo.
bool
e Boolean
sono entrambi tipi di riferimento". Le parole bool
ed Boolean
entrambe si riferiscono allo stesso tipo, e quel tipo è un tipo di valore, non un tipo di riferimento.
bool è un alias per Boolean. Quello che fanno gli alias è sostituire una stringa di testo con un'altra (come cerca / sostituisci tutto in notepad ++), appena prima che il codice venga compilato. L'uso l'uno sull'altro non ha alcun effetto in fase di esecuzione.
Nella maggior parte degli altri linguaggi, uno sarebbe un tipo primitivo e l'altro sarebbe un tipo di oggetto (tipo di valore e tipo di riferimento in gergo C #). C # non ti dà la possibilità di scegliere tra i due. Quando si desidera chiamare un metodo statico definito nella classe booleana, considera automaticamente il valore booleano come tipo di riferimento. Se si crea una nuova variabile booleana, la tratta automaticamente come un tipo di riferimento (a meno che non si usi il metodo Activator.CreateInstance).
Forse il bool è un po 'più "leggero" del booleano; È interessante notare che cambiando questo:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...a questa:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... ha fatto sì che il mio file cs emettesse un "using System;" Cambiando il tipo in "bool", i capelli della clausola using diventano grigi.
(Visual Studio 2010, progetto WebAPI)
System.Boolean
piuttosto che solo Boolean
. La using System;
stava rivelando perché ha permesso Boolean
di essere correttamente interpretata come System.Boolean
. Non molto più leggero, ma solo meno dettagliato.