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# statisch trefwoord

C# statisch zoekwoord

In deze tutorial leren we over het statische trefwoord in C# aan de hand van voorbeelden.

In C#, als we een static gebruiken trefwoord met klasleden, dan is er een enkele kopie van het type lid.

En alle objecten van de klas delen een enkele kopie in plaats van individuele kopieën te maken.


C# statische variabelen

Als een variabele is gedeclareerd static , hebben we toegang tot de variabele met behulp van de klassenaam. Bijvoorbeeld,

using System;

namespace StaticKeyword {

  class Student {

    // static variable
    public static string department = "Computer Science";
  }

  class Program {
    static void Main(string[] argos) {
    
      // access static variable
      Console.WriteLine("Department: " + Student.department);
     
      Console.ReadLine();
    }
  }
}

Uitvoer

Department: Computer Science

In het bovenstaande voorbeeld hebben we een statische variabele gemaakt met de naam afdeling . Omdat de variabele statisch is, hebben we de klassenaam Student . gebruikt om toegang te krijgen tot de variabele.


Statische variabelen versus instantievariabelen

In C# heeft elk object van een klasse zijn eigen kopie van instantievariabelen. Bijvoorbeeld,

class Student {

  // instance variable
  public string studentName;
 }

class Program {
  static void Main(string[] args) {

    Student s1 = new Student();
    Student s2 = new Student();
  }
}

Hier, beide objecten s1 en s2 zal aparte kopieën hebben van de variabele studentName . En ze verschillen van elkaar.

Als we echter een variabele statisch declareren, delen alle objecten van de klasse dezelfde statische variabele. En we hoeven geen objecten van de klasse te maken om toegang te krijgen tot de statische variabelen.

Voorbeeld:C# statische variabele vs. Instantievariabele

using System;
 
namespace StaticKeyword {
 
  class Student {
    static public string schoolName = "Programiz School";
    public string studentName;
 
  }
 
    class Program {
    static void Main(string[] args) {
       
      Student s1 = new Student();
      s1.studentName = "Ram";

      // calls instance variable
      Console.WriteLine("Name: " + s1.studentName);
      // calls static variable
      Console.WriteLine("School: " + Student.schoolName);
 
      Student s2 = new Student();
      s2.studentName = "Shyam";
   
       // calls instance variable
      Console.WriteLine("Name: " + s2.studentName);
      // calls static variable
      Console.WriteLine("School: " + Student.schoolName);
      
      Console.ReadLine();
    }
  }
}

Uitvoer

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

In het bovenstaande programma heeft de klasse Student een niet-statische variabele met de naam studentName en een statische variabele genaamd schoolName .

Binnen het Programma klasse,

  • s1.studentName / s2.studentName - roept de niet-statische variabele aan met objecten s1 en s2 respectievelijk
  • Student.schoolName - roept de statische variabele aan met behulp van de klassenaam

Sinds de schoolName hetzelfde is voor alle leerlingen, is het goed om de schoolName statisch. Het bespaart geheugen en maakt het programma efficiënter.


C# statische methoden

Net als statische variabelen, kunnen we de statische methoden aanroepen met de klassenaam.

class Test {

  public static void display() {....}

}

class Program {
  static void Main(string[] args) {

    Test.display();
  }
}

Hier hebben we rechtstreeks vanuit Programma . toegang gekregen tot de statische methode klassen die de klassenaam gebruiken.

Wanneer we een methode statisch verklaren, delen alle objecten van de klasse dezelfde statische methode.

Voorbeeld:C# statische en niet-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();
      Test.display2();    
      Console.ReadLine();
    }
  }
}

Uitvoer

Non static method
Static method

In het bovenstaande programma hebben we een niet-statische methode gedeclareerd met de naam display1() en een statische methode genaamd display2() binnen de klas Test .

Binnen de programmaklas,

  • t1.display1() - toegang krijgen tot de niet-statische methode met s1 voorwerp
  • Test.display2() - toegang krijgen tot de statische methode met de klassenaam Test

Opmerking :In C#, de Hoofd methode is statisch. We kunnen het dus aanroepen zonder het object te maken.


C# statische klasse

Als we in C# een klasse als statisch declareren, kunnen we geen objecten van de klasse maken. Bijvoorbeeld,

using System;

namespace StaticKeyword {

  static class Test {
    static int a = 5;
    static void display() {

      Console.WriteLine("Static method");
    }
  
    static void Main(string[] args) {

      // creating object of Test
      Test t1 = new Test();
      Console.WriteLine(a);
      display();
    }
  }
}

In het bovenstaande voorbeeld hebben we een statische klasse Test . We hebben een object gemaakt t1 van de klas Test .

Aangezien we geen object van de statische klasse kunnen maken, krijgen we de volgende foutmelding:

error CS0723: Cannot declare a variable of static type 'Test' 
error CS0712: Cannot create an instance of the static class

Merk op dat het veld en de methode van de statische klasse ook statisch zijn omdat we alleen statische leden binnen de statische klasse kunnen hebben.

Opmerking :We kunnen geen statische klasse in C# erven. Bijvoorbeeld,

static class A {
  ...
}

// Error Code
class B : A {
  ...
}

Toegang tot statische leden binnen de klas

Als we toegang hebben tot de statische variabelen en methoden binnen dezelfde klasse, kunnen we ze rechtstreeks benaderen zonder de klassenaam te gebruiken. Bijvoorbeeld,

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);
      display();
      Console.ReadLine();
    }
  }
}

Uitvoer

25
Static method

Hier hebben we toegang tot het statische veld leeftijd en statische methode display() zonder de klassenaam te gebruiken.


C Taal

  1. C# klasse en object
  2. C# Toegangsmodificaties
  3. C# dit trefwoord
  4. C# abstracte klasse en methode
  5. C# geneste klasse
  6. C# Gedeeltelijke klasse en gedeeltelijke methode
  7. C# verzegelde klasse en methode
  8. Statische variabele in Java:wat is statisch blok en methode [voorbeeld]
  9. Polymorfisme in C++
  10. Gegevensabstractie in C++
  11. Gegevensinkapseling in C++