Qual è la differenza tra boole Booleantipi in C #?
Qual è la differenza tra boole Booleantipi in C #?
Risposte:
boolè un alias System.Booleanproprio come intè un alias per System.Int32. Consulta un elenco completo di alias qui: Tabella dei tipi predefiniti (Riferimenti per C #) .
booleane Booleannon è 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 #).
boolpotesse contenere null, ma Booleannon 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 Booleanfunzionerà solo se lo hai using System;(che di solito è, ma non necessariamente, incluso) (a meno che non lo scrivi come System.Boolean). boolnon 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.
boole Booleannon 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 ConvertTometodo per convertirlo in un altro tipo.
boole Booleansono entrambi tipi di riferimento". Le parole booled Booleanentrambe 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.Booleanpiuttosto che solo Boolean. La using System;stava rivelando perché ha permesso Booleandi essere correttamente interpretata come System.Boolean. Non molto più leggero, ma solo meno dettagliato.