Standardvärden för C#-typer (C#-referens)
I följande tabell visas standardvärdena för C#-typer:
Typ | Default value |
---|---|
Alla referenstyper | null |
Alla inbyggda numeriska inbyggda typer | 0 (noll) |
Valfri inbyggd numerisk typ av flyttal | 0 (noll) |
Bool | false |
Char | '\0' (U+0000) |
Enum | Värdet som skapas av uttrycket (E)0 , där E är uppräkningsidentifieraren. |
Struct | Värdet som skapas genom att ange alla fält av värdetyp till deras standardvärden och alla fält av referenstyp till null . |
Valfri 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 literalen default
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 den implicita parameterlösa konstruktorn också standardvärdet för typen, vilket visas i följande exempel:
var n = new System.Numerics.Complex();
Console.WriteLine(n); // output: (0, 0)
Om instansen vid körning representerar System.Type en värdetyp kan du använda Activator.CreateInstance(Type) metoden för att anropa den parameterlösa konstruktorn för att hämta standardvärdet för typen.
Kommentar
I C# 10 och senare kan en strukturtyp (som är en värdetyp) ha en explicit parameterlös konstruktor som kan generera ett icke-standardvärde av typen. Därför rekommenderar vi att du använder operatorn default
eller literalen default
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
- C# 10 – Parameterlösa structkonstruktorer
- C# 11 – Automatisk standard structs