Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# Static Keyword: Statische Variablen, Methoden und Klassen meistern

C# Static Keyword

Dieser Leitfaden erklärt das static Schlüsselwort in C#, deckt statische Variablen, Methoden und Klassen mit klaren, realen Beispielen ab.

In C# bewirkt die Anwendung des static Schlüsselworts auf ein Member, dass eine einzelne gemeinsame Instanz für alle Objekte dieses Typs erstellt wird. Statt dass jede Instanz ihre eigene Kopie hält, lebt das statische Member einmal pro Typ.


Statische Variablen in C#

Wenn ein Feld als static deklariert wird, können Sie direkt über den Klassennamen darauf zugreifen, ohne ein Objekt zu erstellen.

using System;
namespace StaticKeyword {
    class Student {
        // statische Variable, geteilt von allen Studenten
        public static string department = "Computer Science";
    }
    class Program {
        static void Main(string[] args) {
            // Zugriff auf statisches Feld über Klassennamen
            Console.WriteLine("Department: " + Student.department);
            Console.ReadLine();
        }
    }
}

Ausgabe

Department: Computer Science

Das Feld department wird von jeder Student Instanz geteilt, daher referenzieren wir es als Student.department.


Statische vs. Instanzvariablen

Instanzvariablen gehören einzelnen Objekten, jedes mit eigener Kopie. Beispiel:

class Student {
    public string studentName;
}
class Program {
    static void Main(string[] args) {
        Student s1 = new Student();
        Student s2 = new Student();
    }
}

Hier haben s1 und s2 separate studentName Felder. Im Gegensatz dazu ist ein statisches Feld für alle Instanzen gemeinsam und ohne Objekterstellung zugänglich.

Beispiel: Statische vs. Instanzvariablen

using System;
namespace StaticKeyword {
    class Student {
        public static string schoolName = "Programiz School"; // geteilt
        public string studentName; // einzigartig
    }
    class Program {
        static void Main(string[] args) {
            Student s1 = new Student();
            s1.studentName = "Ram";
            Console.WriteLine("Name: " + s1.studentName); // Instanz
            Console.WriteLine("School: " + Student.schoolName); // statisch
            Student s2 = new Student();
            s2.studentName = "Shyam";
            Console.WriteLine("Name: " + s2.studentName);
            Console.WriteLine("School: " + Student.schoolName);
            Console.ReadLine();
        }
    }
}

Ausgabe

Name: Ram School: Programiz School Name: Shyam School: Programiz School

Das statische Feld schoolName ist für alle Studenten identisch, was es speichereffizient und logisch konsistent macht.


Statische Methoden in C#

Statische Methoden werden auf der Klasse selbst aufgerufen, nicht auf einer Instanz. Sie können nur auf andere statische Member zugreifen.

class Test {
    public static void Display() {
        // Implementierung
    }
}
class Program {
    static void Main(string[] args) {
        Test.Display();
    }
}

Alle Objekte von Test teilen dieselbe Display Methode, daher rufen Sie sie über den Klassennamen auf.

Beispiel: Statische und nicht-statische Methoden

using System;
namespace StaticKeyword {
    class Test {
        public void Display1() {
            Console.WriteLine("Non static method");
        }
        public static void Display2() {
            Console.WriteLine("Static method");
        }
    }
    class Program {
        static void Main(string[] args) {
            Test t1 = new Test();
            t1.Display1(); // Instanzaufruf
            Test.Display2(); // statischer Aufruf
            Console.ReadLine();
        }
    }
}

Ausgabe

Non static method Static method

Hinweis: Die Main Methode selbst ist statisch, was ihr Ausführung ohne Instanz ermöglicht.


Statische Klassen

Eine statische Klasse kann nicht instanziiert werden und darf nur statische Member enthalten. Sie eignet sich zum Gruppieren von Hilfsmethoden.

using System;
namespace StaticKeyword {
    static class Test {
        static int a = 5;
        static void Display() {
            Console.WriteLine("Static method");
        }
        static void Main(string[] args) {
            // Test t1 = new Test(); // ❌ Kompilierfehler
            Console.WriteLine(a);
            Display();
        }
    }
}

Der Versuch, Test zu instanziieren, führt zu Kompilierfehlern CS0723 und CS0712, was ihre statische Natur bestätigt.

Statische Klassen können nicht vererbt werden. Zum Beispiel:

static class A { /* ... */ }
// class B : A { /* ... */ } // ❌ Fehler

Auf statische Member innerhalb der Klasse zugreifen

Innerhalb derselben Klasse können Sie auf statische Felder und Methoden direkt verweisen, ohne den Klassenqualifizierer.

using System;
namespace StaticKeyword {
    class Test {
        static int age = 25;
        public static void Display() {
            Console.WriteLine("Static method");
        }
        static void Main(string[] args) {
            Console.WriteLine(age); // direkter Zugriff
            Display(); // direkter Zugriff
            Console.ReadLine();
        }
    }
}

Ausgabe

25 Static method

Hier werden age und Display ohne Präfix Test. verwendet.

C Sprache

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. C# Zugriffsmodifizierer verstehen: Public, Private, Protected, Internal und mehr
  3. C# this Schlüsselwort meistern
  4. C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
  5. C# Geschachtelte Klassen verstehen: Definition, Verwendung und Vererbung
  6. C# Partielle Klassen und Methoden verstehen
  7. Versiegelte Klassen und Methoden in C# meistern
  8. Java static erklärt: Variablen, Methoden und Blöcke – Praxisbeispiele
  9. Polymorphie in C++: Praktischer Leitfaden
  10. Datenabstraktion in C++: Interface-Implementierung-Trennung