byte (C#-Referenz)byte (C# Reference)

byte kennzeichnet einen ganzzahligen Typ, der Werte anhand der folgenden Tabelle speichert.byte denotes an integral type that stores values as indicated in the following table.

TypType BereichRange GrößeSize .NET-Typ.NET type
byte 0 bis 2550 to 255 8-Bit-Ganzzahl ohne VorzeichenUnsigned 8-bit integer System.Byte

LiteraleLiterals

Sie können eine byte-Variable deklarieren und initialisieren, indem Sie ihr ein Dezimalliteral, ein hexadezimales Literal oder (ab C# 7.0) ein binäres Literal zuweisen.You can declare and initialize a byte variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7.0) a binary literal to it. Wenn sich das Ganzzahlliteral außerhalb des Bereichs von byte befindet (sprich, wenn es kleiner als Byte.MinValue oder größer als Byte.MaxValue ist) tritt ein Kompilierfehler auf.If the integer literal is outside the range of byte (that is, if it is less than Byte.MinValue or greater than Byte.MaxValue), a compilation error occurs.

Im folgenden Beispiel werden ganze Zahlen, die gleich 201 sind und von dezimalen, hexadezimalen und binären Literalen dargestellt werden, implizit von int- in byte-Werte konvertiert.In the following example, integers equal to 201 that are represented as decimal, hexadecimal, and binary literals are implicitly converted from int to byte values.

byte byteValue1 = 201;
Console.WriteLine(byteValue1);

byte byteValue2 = 0x00C9;
Console.WriteLine(byteValue2);

byte byteValue3 = 0b1100_1001;
Console.WriteLine(byteValue3);
// The example displays the following output:
//          201
//          201
//          201

Hinweis

Verwenden Sie das Präfix 0x oder 0X zum Kennzeichnen eines hexadezimalen Literals und das Präfix 0b oder 0B zum Kennzeichnen eines binären Literals.You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. Dezimale Literale haben kein Präfix.Decimal literals have no prefix.

Mit C# 7.0 wurde eine Reihe von Features zur Verbesserung der Lesbarkeit hinzugefügt.Starting with C# 7.0, a couple of features have been added to enhance readability.

  • C# 7.0 lässt die Verwendung des Unterstrichs (_) als Zifferntrennzeichen zu.C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • C# 7.2 lässt die Verwendung von _ als Zifferntrennzeichen nach dem Präfix für ein binäres oder hexadezimales Literal zu.C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. Dezimalliterale dürfen keinen vorangestellten Unterstrich aufweisen.A decimal literal isn't permitted to have a leading underscore.

Im Folgenden werden einige Beispiele veranschaulicht.Some examples are shown below.

byte byteValue4 = 0b1100_1001;
Console.WriteLine(byteValue4);

byte byteValue5 = 0b_1100_1001;
Console.WriteLine(byteValue5);       // C# 7.2 onwards
// The example displays the following output:
//          201
//          201

KonvertierungenConversions

Es gibt eine vordefinierte implizite Konvertierung von byte in short, ushort, int, uint, long, ulong, float, double oder decimal.There is a predefined implicit conversion from byte to short, ushort, int, uint, long, ulong, float, double, or decimal.

Sie können nicht literale numerische Typen mit einer größeren Speichergröße nicht implizit zu byte konvertieren.You cannot implicitly convert non-literal numeric types of larger storage size to byte. Weitere Informationen zu Speichergrößen ganzzahliger Typen finden Sie unter Tabelle ganzzahliger Typen.For more information on the storage sizes of integral types, see Integral Types Table. Betrachten Sie z.B. die folgenden beiden byte-Variablen x und y:Consider, for example, the following two byte variables x and y:

byte x = 10, y = 20;  

Die folgende Zuweisungsanweisung erzeugt einen Compilerfehler, da der arithmetische Ausdruck auf der rechten Seite des Zuweisungsoperators standardmäßig int ergibt.The following assignment statement will produce a compilation error, because the arithmetic expression on the right-hand side of the assignment operator evaluates to int by default.

// Error: conversion from int to byte:  
byte z = x + y;  

Verwenden Sie eine Umwandlung, um dieses Problem zu lösen:To fix this problem, use a cast:

// OK: explicit conversion:  
byte z = (byte)(x + y);  

Es ist jedoch möglich, die folgenden Anweisungen zu verwenden, bei denen die Zielvariable über dieselbe oder eine größere Speichergröße verfügt:It is possible though, to use the following statements where the destination variable has the same storage size or a larger storage size:

int x = 10, y = 20;  
int m = x + y;  
long n = x + y;  

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkommadatentypen in byte gibt.Also, there is no implicit conversion from floating-point types to byte. Die folgende Anweisung erzeugt z.B. einen Compilerfehler, außer es wird eine explizite Umwandlung verwendet:For example, the following statement generates a compiler error unless an explicit cast is used:

// Error: no implicit conversion from double:  
byte x = 3.0;   
// OK: explicit conversion:  
byte y = (byte)3.0;  

Beim Aufrufen überladener Methoden muss eine Typumwandlung durchgeführt werden.When calling overloaded methods, a cast must be used. Betrachten Sie z.B. die folgenden überladenen Methoden, die die Parameter byte und int verwenden:Consider, for example, the following overloaded methods that use byte and int parameters:

public static void SampleMethod(int i) {}  
public static void SampleMethod(byte b) {}  

Die Verwendung der byte-Umwandlung gewährleistet, dass der richtige Typ aufgerufen wird, wie z.B.:Using the byte cast guarantees that the correct type is called, for example:

// Calling the method with the int parameter:  
SampleMethod(5);  
// Calling the method with the byte parameter:  
SampleMethod((byte)5);  

Weitere Informationen zu arithmetischen Ausdrücken mit gemischten Gleitkomma- und ganzzahligen Typen finden Sie unter float und double.For information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

Weitere Informationen zu impliziten numerischen Konvertierungsregeln finden Sie in der Tabelle für implizite numerische Konvertierungen.For more information on implicit numeric conversion rules, see the Implicit Numeric Conversions Table.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also

Byte
C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
Tabelle ganzzahliger TypenIntegral Types Table
Tabelle integrierter TypenBuilt-In Types Table
Tabelle für implizite numerische KonvertierungenImplicit Numeric Conversions Table
Tabelle für explizite numerische KonvertierungenExplicit Numeric Conversions Table