Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# Static Keyword: Static Variabelen, Methodes en Classes Beheersen

C# Static Keyword

Deze gids legt uit het static keyword in C#, met static variabelen, methodes en klassen met duidelijke, real-world voorbeelden.

In C# creëert het toepassen van het static keyword op een lid een enkele gedeelde instantie voor alle objecten van dat type. In plaats van dat elke instantie zijn eigen kopie houdt, leeft het static lid één keer per type.


Static Variabelen in C#

Wanneer een veld gedeclareerd wordt als static, kunt u het direct benaderen via de klassenaam, zonder een object aan te maken.

using System;
namespace StaticKeyword {
    class Student {
        // static variabele gedeeld door alle studenten
        public static string department = "Computer Science";
    }
    class Program {
        static void Main(string[] args) {
            // Benader het static veld via de klassenaam
            Console.WriteLine("Afdeling: " + Student.department);
            Console.ReadLine();
        }
    }
}

Output

Afdeling: Computer Science

Het veld department wordt gedeeld door elke Student instantie, dus we refereren naar het als Student.department.


Static Variabelen vs. Instantie Variabelen

Instantievariabelen behoren tot individuele objecten, elk met een eigen kopie. Bijvoorbeeld:

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

Hier hebben s1 en s2 aparte studentName velden. In tegenstelling tot een static veld is gemeenschappelijk voor alle instanties en kan worden benaderd zonder een object aan te maken.

Voorbeeld: Static vs. Instantie Variabelen

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

Output

Naam: Ram
School: Programiz School
Naam: Shyam
School: Programiz School

Het static veld schoolName is identiek voor alle studenten, wat het geheugenefficiënt en logisch consistent maakt.


Static Methodes in C#

Static methodes worden aangeroepen op de klasse zelf, niet op een instantie. Ze kunnen alleen andere static leden benaderen.

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

Alle objecten van Test delen dezelfde Display methode, dus u roept het aan via de klassenaam.

Voorbeeld: Static en Non-Static Methodes

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

Output

Non static methode
Static methode

Let op: De Main methode is zelf static, wat haar toestaat te draaien zonder instantie.


Static Classes

Een static klasse kan niet geïnstantieerd worden en kan alleen static leden bevatten. Het is nuttig voor het groeperen van helper methodes.

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

Het proberen Test te instantiëren resulteert in compileerfouten CS0723 en CS0712, wat de static aard bevestigt.

Static klassen kunnen niet geërfd worden. Bijvoorbeeld:

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

Static Leden Benaderen Binnen de Klasse

Binnen dezelfde klasse kunt u naar static velden en methodes refereren zonder de klassenaam te prefixen.

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

Output

25
Static methode

Hier worden age en Display gebruikt zonder ze te prefixen met Test..

C Taal

  1. C# Classes & Objects: Fundamenten voor Robuuste OOP
  2. C# Access Modifiers: Public, Private, Protected, Internal en Meer
  3. De C# this Keyword Onder de Loep
  4. C# Abstract Classes & Methods: Een Praktische Gids
  5. C# Geneste Classes: Definitie, Gebruik en Inheritance
  6. C# Partial Classes en Methods: Een Praktische Gids
  7. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  8. Polymorfisme in C++ Begrijpen: Een Praktische Gids
  9. Data Abstractie in C++ Beheersen: Ontwerp Vereenvoudigen met Interface-Implementatie Scheiding
  10. Data Encapsulatie in C++: Uw Code Beschermen
  11. Java Static Uitgelegd: Variabelen, Methodes en Blokken – Praktische Voorbeelden