Standardvärden för C#-typer (C#-referens)
I följande tabell visas standardvärdena för C#-typer:
Typ | Standardvärde |
---|---|
Vilken som helst referenstyp | null |
Alla inbyggda heltalstyper | 0 (noll) |
Någon inbyggd flyttalstyp för numeriska värden | 0 (noll) |
bool | false |
tecken |
'\0' (U+0000) |
enum | Värdet av uttrycket (E)0 , där E är enumidentifieraren. |
struct | Värdet som skapas genom att ange alla fält av värdetyp till sina standardvärden och alla fält av referenstyp till null . |
Vilken som helst nullbar värdetyp | En instans där egenskapen HasValue är false och egenskapen Value är odefinierad. Standardvärdet kallas även null- värdet för en nullbar värdetyp. |
Standardvärdeuttryck
Använd operatorn default
för att skapa standardvärdet för en typ, vilket visas i följande exempel:
int a = default(int);
Du kan använda default
literal för att initiera en variabel med standardvärdet för dess typ:
int a = default;
Parameterlös konstruktor av en värdetyp
För en värdetyp genererar implicit parameterlös konstruktor också standardvärdet för typen, vilket visas i följande exempel:
var n = new System.Numerics.Complex();
Console.WriteLine(n); // output: (0, 0)
Vid körning, om System.Type-instansen representerar en värdetyp, kan du använda metoden Activator.CreateInstance(Type) för att anropa den parameterlösa konstruktorn för att hämta standardvärdet för typen.
Obs
En strukturtyp (som är en värdetyp) kan ha en explicit parameterlös konstruktor som kan ge ett värde av typen som inte är standard. Därför rekommenderar vi att du använder operatorn default
eller default
literal för att skapa standardvärdet för en typ.
Språkspecifikation för C#
Mer information finns i följande avsnitt i C#-språkspecifikationen:
- Standardvärden
- Standardkonstruktorer
- Parameterlösa struct-konstruktorer
- C# 11 – Automatiska standardstrukturer