2010-03-10 16 views
88

ho notato che in C# ci sono sia un byte e Byte tipo di dati. Entrambi affermano di essere di tipo struct System.Byte e rappresentano un numero intero senza segno di 8 cifre.Differenza tra byte vs tipi di dati byte in C#

Quindi sono curioso di sapere qual è la differenza tra le due e perché utilizzereste l'una sull'altra.

Grazie!

risposta

101

La parola chiave byte è un alias per il tipo di dati System.Byte.

Rappresentano lo stesso tipo di dati, quindi il codice risultante è identico. Ci sono solo alcune differenze nell'uso:

  • È possibile utilizzare byte anche se lo spazio dei nomi System non è incluso. Per utilizzare Byte devi avere un using System; nella parte superiore della pagina o specificare lo spazio dei nomi completo System.Byte.

  • ci sono alcune situazioni in cui C# consente solo di utilizzare la parola chiave, non il tipo di quadro, per esempio:

.

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

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

Nessuna differenza. byte è alias System.Byte, allo stesso modo è int alias per System.Int32, long a System.Int64, string a System.String, ...

3

Essi sono generalmente gli stessi.

19

byte e System.Byte in C# sono identici. byte è semplicemente zucchero sintattico ed è consigliato da StyleCop (per le linee guida sullo stile).

+2

Infatti byte viene chiamato alias di System.Byte –

4

C# ha un numero di alias per i tipi .NET. byte è un alias per Byte proprio come string è un alias per String e int è un alias per Int32. Cioè byte e Byte sono lo stesso tipo effettivo.

4

Niente, il minuscolo è una parola chiave che è un alias per il tipo Byte.

Questo è puro zucchero sintattico.

0

byte è un tipo di dati incorporato in C#.
System.Byte è una struttura che rappresenta un byte e fornisce metodi aggiuntivi come Parse e TryParse.

byte è alias di System.Byte struct. Diversi linguaggi .NET hanno diversi alias basati sulla semantica del linguaggio particolare, ma tutti si associano a tipi specifici nel framework .NET.

0

anche quando si utilizza la riflessione ,,,

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

Non c'è concetto "convertendolo byte". ** byte ** e 'System.Byte' sono identici al 100%. Non c'è alcuna differenza. Questo è diverso da Java, dove sono in realtà classi discrete. –