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 respectievelijkStudent.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 voorwerpTest.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
- C# klasse en object
- C# Toegangsmodificaties
- C# dit trefwoord
- C# abstracte klasse en methode
- C# geneste klasse
- C# Gedeeltelijke klasse en gedeeltelijke methode
- C# verzegelde klasse en methode
- Statische variabele in Java:wat is statisch blok en methode [voorbeeld]
- Polymorfisme in C++
- Gegevensabstractie in C++
- Gegevensinkapseling in C++