工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

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();
  }
}

ここでは、両方のオブジェクト s1s2 変数 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 という名前の静的変数 .

プログラムの内部 クラス、

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 クラス内では、

注意 :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言語

  1. C# クラスとオブジェクト
  2. C# アクセス修飾子
  3. C# このキーワード
  4. C# の抽象クラスとメソッド
  5. C# ネストされたクラス
  6. C# 部分クラスと部分メソッド
  7. C# の封印されたクラスとメソッド
  8. Javaの静的変数:静的ブロック&メソッドとは【例】
  9. C++ のポリモーフィズム
  10. C++ でのデータの抽象化
  11. C++ でのデータのカプセル化