¿Cuál es la diferencia entre bool
y los Boolean
tipos en C #?
¿Cuál es la diferencia entre bool
y los Boolean
tipos en C #?
Respuestas:
bool
es un alias para System.Boolean
igual que int
es un alias para System.Int32
. Vea una lista completa de alias aquí: Tabla de tipos incorporados (Referencia de C #) .
boolean
y Boolean
no es lo mismo. Uno es un tipo de datos primitivo y el otro es un objeto.
No hay diferencia: bool es simplemente un alias de System.Boolean.
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Me doy cuenta de que esto es muchos años después, pero me encontré con esta página de Google con la misma pregunta.
Hay una pequeña diferencia en la página de MSDN a partir de ahora.
VS2005
Nota:
Si necesita una variable booleana que también puede tener un valor nulo, use bool. Para obtener más información, consulte Tipos anulables (Guía de programación de C #).
VS2010
Nota:
Si necesita una variable booleana que también puede tener un valor nulo, use bool ?. Para obtener más información, consulte Tipos anulables (Guía de programación de C #).
bool
podía contener nulo, pero Boolean
no podía. Aunque hay un enlace de la documentación más antigua a la más reciente, no leí la documentación más nueva lo suficiente como para notar la única ?
diferencia.
Ellos son iguales. Boolean ayuda a simplificar la conversión de ida y vuelta entre C # y VB.Net. La mayoría de los programadores de C # tienden a preferir 'bool', pero si está en una tienda donde hay muchos VB.Net y C #, entonces puede preferir Boolean porque funciona en ambos lugares.
bool es un alias para la clase booleana. Utilizo el alias cuando declaro una variable y el nombre de la clase cuando llamo a un método en la clase.
Son lo mismo, Bool es solo System.Boolean acortado. Use Boolean cuando esté con un programador de VB.net, ya que funciona con C # y Vb
Tenga en cuenta que Boolean
solo funcionará si lo tiene using System;
(que generalmente se incluye, pero no necesariamente) (a menos que lo escriba como System.Boolean
). bool
no necesitausing System;
bool es un tipo primitivo, lo que significa que el valor (verdadero / falso en este caso) se almacena directamente en la variable. Boolean es un objeto. Una variable de tipo booleano almacena una referencia a un objeto booleano. La única diferencia real es el almacenamiento. Un objeto siempre ocupará más memoria que un tipo primitivo, pero en realidad, cambiar todos los valores booleanos a bool no tendrá un impacto notable en el uso de la memoria.
Estaba equivocado; así es como funciona en java con boolean y boolean. En C #, bool y Boolean son ambos tipos de referencia. Ambos almacenan su valor directamente en la variable, ambos no pueden ser nulos y ambos requieren un método "convertTO" para almacenar sus valores en otro tipo (como int). Solo importa cuál use si necesita llamar a una función estática definida dentro de la clase booleana.
bool
y Boolean
no son dos tipos diferentes, que un tipo no es un tipo de referencia, puede llamar a un método estático en el que un tipo usando identificador, y no lo hace, de hecho, necesidad de llamar a un ConvertTo
método para convertirlo en otro tipo.
bool
y Boolean
son ambos tipos de referencia". Las palabras bool
y Boolean
ambas se refieren al mismo tipo, y ese tipo es un tipo de valor, no un tipo de referencia.
bool es un alias para booleano. Lo que hacen los alias es reemplazar una cadena de texto con otra (como buscar / reemplazar todo en el bloc de notas ++), justo antes de compilar el código. El uso de uno sobre el otro no tiene ningún efecto en tiempo de ejecución.
En la mayoría de los otros lenguajes, uno sería un tipo primitivo y el otro sería un tipo de objeto (tipo de valor y tipo de referencia en la jerga de C #). C # no le da la opción de elegir entre los dos. Cuando desea llamar a un método estático definido en la clase booleana, trata automáticamente el booleano como un tipo de referencia. Si crea una nueva variable booleana, la trata automáticamente como un tipo de referencia (a menos que utilice el método Activator.CreateInstance).
Quizás bool es un poco "más ligero" que booleano; Curiosamente, cambiando esto:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...a esto:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... causó que mi archivo cs brotara "usando el Sistema"; Cambiar el tipo de nuevo a "bool" causó que el cabello de la cláusula de uso se volviera gris.
(Visual Studio 2010, proyecto WebAPI)
System.Boolean
más que simplemente Boolean
. El using System;
estaba apareciendo porque permitía Boolean
ser interpretado correctamente como System.Boolean
. No es realmente más ligero sino menos detallado.