Werttypen (C#-Referenz)Value Types (C# Reference)

Die Werttypen sind in zwei Hauptkategorien unterteilt:The value types consist of two main categories:

Strukturen werden in diese Kategorien eingeteilt:Structs fall into these categories:

Hauptfunktionen von WerttypenMain Features of Value Types

Variablen, die auf Werttypen basieren, enthalten Werte direkt.Variables that are based on value types directly contain values. Durch das Zuweisen einer Werttypvariablen zu einer anderen wird der enthaltene Wert kopiert.Assigning one value type variable to another copies the contained value. Dies unterscheidet sich von der Zuweisung von Verweistypvariablen. Dabei wird ein Verweis auf das Objekt, aber nicht das Objekt selbst kopiert.This differs from the assignment of reference type variables, which copies a reference to the object but not the object itself.

Alle Werttypen werden implizit von System.ValueType abgeleitet.All value types are derived implicitly from the System.ValueType.

Im Gegensatz zu Verweistypen können Sie von Werttypen keinen neuen ableiten.Unlike with reference types, you cannot derive a new type from a value type. Strukturen können aber wie Verweistypen Schnittstellen implementieren.However, like reference types, structs can implement interfaces.

Im Gegensatz zu Verweistypen können Werttypen nicht den Wert null enthalten.Unlike reference types, a value type cannot contain the null value. Allerdings ermöglicht es die Funktion Nullable-Typ, dass Werttypen null zugewiesen werden können.However, the nullable types feature does allow for value types to be assigned to null.

Jeder Werttyp hat einen impliziten Standardkonstruktor, der den Standardwert dieses Typs initialisiert.Each value type has an implicit default constructor that initializes the default value of that type. Informationen zu den Standardwerten von Werttypen finden Sie unter Tabelle für Standardwerte.For information about default values of value types, see Default Values Table.

Hauptfunktionen von einfachen TypenMain Features of Simple Types

Alle einfachen Typen, die für C# wesentlichen Typen, sind Aliasse der Systemtypen aus dem .NET Framework.All of the simple types -- those integral to the C# language -- are aliases of the .NET Framework System types. int ist z.B. ein Alias von System.Int32.For example, int is an alias of System.Int32. Eine vollständige Liste der Aliase finden Sie unter Tabelle integrierter Typen.For a complete list of aliases, see Built-In Types Table.

Konstante Ausdrücke, deren Operanden alle einfache Typkonstanten sind, werden zur Kompilierzeit ausgewertet.Constant expressions, whose operands are all simple type constants, are evaluated at compilation time.

Einfache Typen können mithilfe von Literalen initialisiert werden.Simple types can be initialized by using literals. „A“ ist beispielsweise ein Literal vom Typ char, und 2001 ist ein Literal vom Typ int.For example, 'A' is a literal of the type char and 2001 is a literal of the type int.

Initialisieren von WerttypenInitializing Value Types

Lokale Variablen in C# müssen vor ihrer Verwendung initialisiert werden.Local variables in C# must be initialized before they are used. Sie könnten eine lokale Variable beispielsweise ohne Initialisierung wie im folgenden Beispiel deklarieren:For example, you might declare a local variable without initialization as in the following example:

int myInt;  

Sie können sie nicht verwenden, bis Sie sie initialisiert haben.You cannot use it before you initialize it. Sie können sie mit der folgenden Anweisung initialisieren:You can initialize it using the following statement:

myInt = new int();  // Invoke default constructor for int type.  

Diese Anweisung entspricht der folgenden Anweisung:This statement is equivalent to the following statement:

myInt = 0;         // Assign an initial value, 0 in this example.  

Natürlich können Sie sich die Deklaration und die Initialisierung in derselben Anweisung befinden, wie in den folgenden Beispielen dargestellt:You can, of course, have the declaration and the initialization in the same statement as in the following examples:

int myInt = new int();  

– oder ––or–

int myInt = 0;  

Durch die Verwendung des Operators new wird der Standardkonstruktor des angegebenen Typs aufgerufen und der Variablen der Standardwert zugewiesen.Using the new operator calls the default constructor of the specific type and assigns the default value to the variable. Im vorherigen Beispiel hat der Standardkonstruktor myInt den Wert 0 zugewiesen.In the preceding example, the default constructor assigned the value 0 to myInt. Weitere Informationen zu Werten, die durch Aufrufen von Standardkonstruktoren zugewiesen werden, finden Sie unter Tabelle für Standardwerte.For more information about values assigned by calling default constructors, see Default Values Table.

Verwenden Sie bei benutzerdefinierten Typen new zum Aufrufen des Standardkonstruktors.With user-defined types, use new to invoke the default constructor. Die folgende Anweisung ruft z.B. den Standardkonstruktor der Point-Struktur auf:For example, the following statement invokes the default constructor of the Point struct:

Point p = new Point(); // Invoke default constructor for the struct.  

Nach diesem Aufruf gilt die Struktur als definitiv zugewiesen. Das bedeutet, dass alle ihre Member mit ihren Standardwerten initialisiert werden.After this call, the struct is considered to be definitely assigned; that is, all its members are initialized to their default values.

Weitere Informationen zum Operator „new“ finden Sie unter new.For more information about the new operator, see new.

Informationen zum Formatieren der Ausgabe von numerischen Typen finden Sie unter Tabelle zur Formatierung numerischer Ergebnisse.For information about formatting the output of numeric types, see Formatting Numeric Results Table.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
TypenTypes
Referenztabellen für TypenReference Tables for Types
VerweistypenReference Types