2010-03-10 24 views
88

Me di cuenta de que en C# hay tanto un byte y Byte tipo de datos. Ambos dicen que son del tipo struct System.Byte y representan un entero sin signo de 8 dígitos.Diferencia entre Byte vs Byte tipos de datos en C#

Tengo curiosidad por saber cuál es la diferencia si hay alguna entre los dos, y por qué la usarías una encima de la otra.

Gracias!

Respuesta

101

La palabra clave byte es un alias para el tipo de datos System.Byte.

Representan el mismo tipo de datos, por lo que el código resultante es idéntico. Sólo hay algunas diferencias en el uso:

  • Puede utilizar byte incluso si el espacio de nombres System no está incluido. Para usar Byte, debe tener un using System; en la parte superior de la página o especificar el espacio de nombre completo System.Byte.

  • Hay algunas situaciones en las que C# sólo se le permite utilizar la palabra clave, no el tipo de marco, por ejemplo:

.

enum Fruits : byte // this works 
{ 
    Apple, Orange 
} 

enum Fruits : Byte // this doesn't work 
{ 
    Apple, Orange 
} 
4

Sin diferencia. byte es alias para System.Byte, de la misma manera int es alias para System.Int32, long a System.Int64, string a System.String, ...

3

Ellos son generalmente los mismos.

19

byte y System.Byte en C# son idénticos. byte es simplemente azúcar sintáctica, y es recomendado por StyleCop (para las pautas de estilo).

+2

De hecho byte se llama un alias de System.Byte –

4

C# tiene una serie de alias para los tipos de .NET. byte es un alias de Byte igual que string es un alias de String y int es un alias de Int32. Es decir. byte y Byte son del mismo tipo real.

4

Nada, la minúscula es una palabra clave que es un alias para el tipo Byte.

Este es el azúcar sintáctico puro.

0

byte es incorporado un tipo de datos en C#.
System.Byte es una estructura que representa un byte y proporciona métodos adicionales como Parse y TryParse.

byte es alias de System.Byte struct. Diferentes lenguajes .NET tienen diferentes alias basados ​​en la semántica del lenguaje particular, pero todos se asignan a tipos específicos en el marco .NET.

0

también cuando se utiliza la reflexión ,,,

Type t=Type.GetType("System.Byte"); //works 

Type t=Type.GetType("System.byte"); //doesn't work, I can see no way to use"byte" directly here without converting it to "Byte" 
+2

No existe el concepto "convirtiéndola en byte". ** byte ** y 'System.Byte' son 100% idénticos. No hay diferencia alguna. Esto es diferente a Java, donde en realidad son clases discretas. –