Statische Methoden und Felder
Definieren Sie Member, die zum Typ selbst gehören.
Statische Methoden und Felder ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Statisch oder Instanz
Ein Instanz-Member gehört zu jedem Objekt; ein statisches Member gehört der Klasse selbst. Von einem statischen Member gibt es genau eine Kopie, die von allen gemeinsam genutzt wird.
using System;
class Counter
{
public static int Total; // shared
public int Id; // per instance
}
class Program
{
static void Main()
{
Counter.Total = 5;
Console.WriteLine("Shared Total: " + Counter.Total);
}
}Statische Felder deklarieren
Auf ein static-Feld wird über den Klassennamen und nicht über eine Instanz zugegriffen: ClassName.Field.
using System;
class Bank
{
public static decimal InterestRate = 0.05m;
}
class Program
{
static void Main()
{
Console.WriteLine("Rate: " + Bank.InterestRate);
}
}Statische Methoden
Eine static-Methode wird ohne eine Instanz ausgeführt. Sie rufen sie über die Klasse auf. Sie kann keine Instanzfelder verwenden, da es kein this gibt.
using System;
class MathUtil
{
public static int Square(int x)
{
return x * x;
}
}
class Program
{
static void Main()
{
Console.WriteLine(MathUtil.Square(7));
}
}Gemeinsamer Zustand über Instanzen hinweg
Da ein statisches Feld nur eine Kopie besitzt, sieht jede Instanz denselben Wert. Das ist für Zähler und gemeinsam genutzte Konfigurationen nützlich.
using System;
class Robot
{
public static int Count;
public Robot()
{
Count++;
}
}
class Program
{
static void Main()
{
new Robot();
new Robot();
new Robot();
Console.WriteLine("Robots created: " + Robot.Count);
}
}Statische Methoden können keine Instanzdaten verwenden
Eine statische Methode besitzt kein this und kann daher nur Parameter, lokale Variablen und andere statische Member verwenden.
using System;
class Calculator
{
public static int Add(int a, int b) => a + b;
public static int Multiply(int a, int b) => a * b;
}
class Program
{
static void Main()
{
Console.WriteLine(Calculator.Add(2, 3));
Console.WriteLine(Calculator.Multiply(4, 5));
}
}Statische und Instanzmember kombinieren
Eine Klasse kann beide Arten enthalten. Instanzmethoden können statische Member lesen, statische Methoden jedoch keine Instanzmember.
using System;
class Account
{
public static decimal Fee = 2m;
public decimal Balance;
public decimal NetBalance()
{
return Balance - Fee; // instance method can read static
}
}
class Program
{
static void Main()
{
var a = new Account { Balance = 100m };
Console.WriteLine("Net: " + a.NetBalance());
}
}Muster für statische Zähler
Jedem neuen Objekt eine ID aus einem statischen Zähler zuzuweisen, ist eine klassische Verwendung statischer Felder.
using System;
class Ticket
{
private static int _next = 1;
public int Number;
public Ticket()
{
Number = _next++;
}
}
class Program
{
static void Main()
{
Console.WriteLine(new Ticket().Number);
Console.WriteLine(new Ticket().Number);
Console.WriteLine(new Ticket().Number);
}
}Statische Hilfsmethoden
Statische Methoden eignen sich hervorragend für zustandslose Operationen, die nur von ihren Eingaben abhängen, etwa Formatierer und Konverter.
using System;
class Format
{
public static string Money(decimal amount)
{
return "$" + amount.ToString("0.00");
}
}
class Program
{
static void Main()
{
Console.WriteLine(Format.Money(12.5m));
}
}Statische Methoden aus statischen Methoden aufrufen
Statische Methoden können andere statische Methoden in derselben Klasse ohne eine Instanz problemlos aufrufen.
using System;
class Geometry
{
public static double CircleArea(double r) => Math.PI * Square(r);
private static double Square(double x) => x * x;
}
class Program
{
static void Main()
{
Console.WriteLine(Geometry.CircleArea(2).ToString("0.00"));
}
}Statische Felder bleiben erhalten
Ein statisches Feld behält seinen Wert während der gesamten Laufzeit des Programms bei, nicht nur für ein einzelnes Objekt. Verwenden Sie dies für Caches oder laufende Summen.
using System;
class Logger
{
public static int MessageCount;
public static void Log(string msg)
{
MessageCount++;
Console.WriteLine("[" + MessageCount + "] " + msg);
}
}
class Program
{
static void Main()
{
Logger.Log("start");
Logger.Log("working");
Logger.Log("done");
}
}Alles zusammenführen
Statische Member bilden klassenweite Konzepte ab: gemeinsame Raten, Zähler und zustandslose Hilfsmethoden, während Instanzmember objektspezifische Daten enthalten.
using System;
class Order
{
public static decimal TaxRate = 0.10m;
public decimal Subtotal;
public decimal Total() => Subtotal + Subtotal * TaxRate;
}
class Program
{
static void Main()
{
var o = new Order { Subtotal = 200m };
Console.WriteLine("Total: " + o.Total());
}
}Schnelltest
Testen Sie Ihr Verständnis statischer Member.
Zusammenfassung
Statische Member gehören zur Klasse und besitzen eine einzige gemeinsam genutzte Kopie; Instanz-Member gehören zu jedem Objekt. Statische Methoden haben kein this und können nicht auf Instanzdaten zugreifen, während Instanzcode statische Member lesen kann. Verwenden Sie statische Member für Zähler, gemeinsam genutzte Konfigurationen und zustandslose Hilfsmethoden.
using System;
class Demo
{
public static int Shared;
public int Own;
public static void Bump() => Shared++;
}
class Program
{
static void Main()
{
Demo.Bump();
Demo.Bump();
Console.WriteLine(Demo.Shared);
}
}Häufig gestellte Fragen
Ist die Lektion „Statische Methoden und Felder“ kostenlos?
Ja — der vollständige Text von „Statische Methoden und Felder“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Statische Methoden und Felder“?
Definieren Sie Member, die zum Typ selbst gehören. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Statische Methoden und Felder“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Statische Methoden und Felder
- Statische Klassen für Hilfsfunktionen
- Konstanten und readonly-Felder
- Statisches versus Instanzdesign