Menu
Coddy logo textTech

Statische Felder & Methoden

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 12 von 70.

Bisher gehörte jedes Feld und jede Methode, die wir erstellt haben, zu einzelnen Objekten. Aber manchmal benötigt man Daten oder Verhalten, die zur Klasse selbst gehören und von allen Instanzen geteilt werden. Hier kommt das Schlüsselwort static ins Spiel.

Ein statisches Feld wird von allen Objekten einer Klasse gemeinsam genutzt. Es gibt nur eine Kopie, unabhängig davon, wie viele Instanzen Sie erstellen:

public class Player
{
    public static int TotalPlayers = 0;
    public string Name { get; set; }
    
    public Player(string name)
    {
        Name = name;
        TotalPlayers++;
    }
}

Jedes Mal, wenn ein neuer Player erstellt wird, erhöht sich TotalPlayers. Alle Spieler teilen sich diesen selben Zähler.

Eine statische Methode gehört zur Klasse und kann aufgerufen werden, ohne ein Objekt zu erstellen:

public class Calculator
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

// Wird auf der Klasse aufgerufen, nicht auf einer Instanz
int result = Calculator.Add(5, 3);

Beachten Sie, dass Sie auf statische Member über den Klassennamen zugreifen und nicht über eine Objektreferenz. Statische Methoden können nicht auf Instanzfelder zugreifen oder this verwenden, da sie zu keinem bestimmten Objekt gehören.

Sie haben bereits statische Member verwendet, ohne es zu merken. Console.WriteLine() ist eine statische Methode und Math.PI ist ein statisches Feld.

challenge icon

Aufgabe

Einfach

Erstellen wir ein Auftragsverfolgungssystem, das statische Member verwendet, um alle in deiner Anwendung aufgegebenen Aufträge zu verfolgen.

Du erstellst zwei Dateien, um deinen Code zu organisieren:

  • Order.cs: Definiere eine Order-Klasse im Namespace OrderSystem. Jeder Auftrag sollte über eine Instanzeigenschaft OrderId (int) und CustomerName (string) verfügen. Die Klasse sollte außerdem die Gesamtzahl der erstellten Aufträge mithilfe eines statischen Felds TotalOrders verfolgen und eine statische Methode GetNextOrderId() bereitstellen, die die nächste verfügbare Auftrags-ID zurückgibt (beginnend bei 1). Der Konstruktor sollte einen Kundennamen akzeptieren, die Auftrags-ID automatisch mithilfe der statischen Methode zuweisen und die Anzahl der Gesamtaufträge erhöhen.
  • Program.cs: Erstelle in deiner Hauptdatei Aufträge basierend auf der Eingabe und gib ihre Details zusammen mit der Gesamtzahl der Aufträge aus.

Du erhältst zwei Eingaben, die Kundennamen für zwei separate Aufträge darstellen.

Gib für jeden Auftrag die Details in diesem Format aus:

Order #{OrderId} - Customer: {CustomerName}

Nachdem beide Aufträge erstellt wurden, gib die Gesamtzahl aus:

Total Orders: {TotalOrders}

Wenn die Eingaben beispielsweise Alice und Bob lauten, sollte die Ausgabe folgendermaßen aussehen:

Order #1 - Customer: Alice
Order #2 - Customer: Bob
Total Orders: 2

Probier es selbst

using System;
using OrderSystem;

class Program
{
    public static void Main(string[] args)
    {
        // Kundennamen lesen
        string customer1 = Console.ReadLine();
        string customer2 = Console.ReadLine();

        // TODO: Erstellen Sie zwei Order-Objekte mit den Kundennamen

        // TODO: Geben Sie die Details jeder Bestellung im folgenden Format aus:
        // Order #{OrderId} - Customer: {CustomerName}

        // TODO: Geben Sie die Gesamtzahl der Bestellungen im folgenden Format aus:
        // Total Orders: {TotalOrders}
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C#-Compiler