C# Academy · Lektion

Introduktion til nullable-værdityper

Deklarér int?, double?, og forstå Nullable .

Lektion 1 af 413 trin

Introduktion til nullable-værdityper er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.

Værdityper kan ikke være null

Normalt indeholder en int altid et tal; den kan aldrig være null. Nogle gange har du brug for at repræsentere »ingen værdi«, f.eks. en manglende måling.

using System;

class Program {
    static void Main() {
        int count = 0;
        Console.WriteLine(count);
    }
}

Nullbar med ?

Tilføj ? efter en værditype for at gøre den nullbar. int? kan indeholde et vilkårligt heltal eller null.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        Console.WriteLine(maybe.HasValue);
        maybe = 42;
        Console.WriteLine(maybe);
    }
}

Andre nullbare typer

Alle værdityper kan gøres nullbare: double?, bool?, DateTime? og så videre.

using System;

class Program {
    static void Main() {
        double? temp = null;
        bool? flag = true;
        Console.WriteLine(temp.HasValue + " " + flag);
    }
}

Nullable<T> skrevet helt ud

int? er blot en kortere skrivemåde for structen Nullable<int>. Begge kompileres til præcis den samme type.

using System;

class Program {
    static void Main() {
        Nullable<int> a = 10;
        int? b = 10;
        Console.WriteLine(a == b);
    }
}

Tildeling af null

Du kan uden videre tildele null til en nullbar variabel og senere tildele den en reel værdi igen.

using System;

class Program {
    static void Main() {
        int? id = 100;
        Console.WriteLine(id);
        id = null;
        Console.WriteLine(id.HasValue);
    }
}

Udskrivning af en nullbar med null

Hvis du udskriver en nullbar, der er null, får du en tom streng og ikke ordet null.

using System;

class Program {
    static void Main() {
        int? value = null;
        Console.WriteLine("[" + value + "]");
    }
}

Implicit konvertering til nullbar type

Et almindeligt int konverteres automatisk til int?, fordi alle heltal er gyldige nullbare heltal.

using System;

class Program {
    static void Main() {
        int x = 7;
        int? y = x;
        Console.WriteLine(y);
    }
}

Nullbar type som metoders returtype

En metode kan returnere en nullbar type for at angive forskellen på »en værdi blev fundet« og »intet blev fundet«.

using System;

class Program {
    static int? FindEven(int[] nums) {
        foreach (int n in nums)
            if (n % 2 == 0) return n;
        return null;
    }
    static void Main() {
        Console.WriteLine(FindEven(new[] {1, 3, 4}));
    }
}

Sammenligning af nullbare værdier

Lighed fungerer som forventet: To nullbare værdier er ens, hvis begge er null, eller hvis begge indeholder den samme værdi.

using System;

class Program {
    static void Main() {
        int? a = null;
        int? b = null;
        Console.WriteLine(a == b);
        int? c = 5;
        Console.WriteLine(c == 5);
    }
}

Hvorfor bruge nullbare typer

Nullbare værdityper modellerer valgfrie data på en enkel måde, f.eks. en databasekolonne, der tillader NULL, eller et felt, som brugeren lod stå tomt.

using System;

class Program {
    static void Main() {
        int? userAge = null;
        string msg = userAge.HasValue ? "Age set" : "Age unknown";
        Console.WriteLine(msg);
    }
}

Nullable er en struct

Nullable<T> er selv en værditype, så en nullbar variabel er aldrig en reference, selv om den kan være null.

using System;

class Program {
    static void Main() {
        int? n = 3;
        Console.WriteLine(n.GetType().Name);
    }
}

Hurtigt tjek

Afprøv din forståelse af nullbare værdityper.

Opsummering

Værdityper som int kan som standard ikke være null. Hvis du tilføjer ?, oprettes en nullbar type (int?), som er en kortere skrivemåde for Nullable<T>.

Nullbare typer lader dig repræsentere manglende eller valgfrie data, konverteres implicit fra den underliggende type og er selv structs.

Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Introduktion til nullable-værdityper” gratis?

Ja — hele teksten til “Introduktion til nullable-værdityper” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Introduktion til nullable-værdityper”?

Deklarér int?, double?, og forstå Nullable . Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Introduktion til nullable-værdityper”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Introduktion til nullable-værdityper
  2. Egenskaberne HasValue og Value
  3. Null-coalescing-operatorer
  4. Nullable i beregninger
← Tilbage til C# Academy