C# 静的キーワード
C# 静的キーワード
このチュートリアルでは、例を使用して C# の static キーワードについて学習します。
C# で static
を使用すると、 キーワードでクラス メンバーを指定すると、タイプ メンバーの単一のコピーが存在します。
また、クラスのすべてのオブジェクトは、個別のコピーを作成するのではなく、単一のコピーを共有します。
C# 静的変数
変数が宣言されている場合 static
、クラス名を使用して変数にアクセスできます。たとえば、
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();
}
}
}
出力
Department: Computer Science
上記の例では、department という名前の静的変数を作成しました。 .変数は静的であるため、クラス名 Student を使用しました 変数にアクセスします。
静的変数とインスタンス変数
C# では、クラスのすべてのオブジェクトが独自のインスタンス変数のコピーを持ちます。たとえば、
class Student {
// instance variable
public string studentName;
}
class Program {
static void Main(string[] args) {
Student s1 = new Student();
Student s2 = new Student();
}
}
ここでは、両方のオブジェクト s1 と s2 変数 studentName の個別のコピーがあります .そして、それらは互いに異なっています。
ただし、変数 static を宣言すると、クラスのすべてのオブジェクトが同じ static 変数を共有します。また、静的変数にアクセスするためにクラスのオブジェクトを作成する必要はありません。
例:C# 静的変数対。インスタンス変数
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();
}
}
}
出力
Name: Ram School: Programiz School Name: Shyam School: Programiz School
上記のプログラムでは、Student クラスに studentName という名前の非静的変数があります。 schoolName という名前の静的変数 .
プログラムの内部 クラス、
s1.studentName
/s2.studentName
- オブジェクト s1 を使用して非静的変数を呼び出します と s2 それぞれStudent.schoolName
- クラス名を使用して静的変数を呼び出します
schoolName以来 schoolName にするのがよいでしょう。 静的。メモリを節約し、プログラムをより効率的にします。
C# 静的メソッド
静的変数と同様に、クラス名を使用して静的メソッドを呼び出すことができます。
class Test {
public static void display() {....}
}
class Program {
static void Main(string[] args) {
Test.display();
}
}
ここでは、Program から静的メソッドに直接アクセスしています。 クラス名を使用したクラス。
メソッドを静的に宣言すると、クラスのすべてのオブジェクトが同じ静的メソッドを共有します。
例:C# の静的メソッドと非静的メソッド
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();
}
}
}
出力
Non static method Static method
上記のプログラムでは、display1() という名前の非静的メソッドを宣言しました。 display2() という名前の静的メソッド Test クラス内 .
Program クラス内では、
t1.display1()
- s1 を使用して非静的メソッドにアクセスします オブジェクトTest.display2()
- クラス名 Test を使用して静的メソッドにアクセスします
注意 :C# では、Main メソッドは静的です。したがって、オブジェクトを作成せずに呼び出すことができます。
C# 静的クラス
C# では、クラスを static として宣言すると、クラスのオブジェクトを作成できません。たとえば、
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();
}
}
}
上記の例では、静的クラス Test があります。 .オブジェクト t1 を作成しました クラス Test の .
静的クラスのオブジェクトを作成できないため、次のエラーが発生します:
error CS0723: Cannot declare a variable of static type 'Test'
error CS0712: Cannot create an instance of the static class
静的クラス内に静的メンバーしか持てないため、静的クラスのフィールドとメソッドも静的であることに注意してください。
注意 :C# では静的クラスを継承できません。たとえば、
static class A {
...
}
// Error Code
class B : A {
...
}
クラス内の静的メンバーにアクセス
同じクラス内の静的変数とメソッドにアクセスしている場合、クラス名を使用せずに直接アクセスできます。たとえば、
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();
}
}
}
出力
25 Static method
ここでは、静的フィールド age にアクセスしています および静的メソッド display()
クラス名を使用せずに。
C言語