C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#での静的メソッドと非静的メソッド


メンバー関数を静的として宣言します。このような関数は静的変数にのみアクセスできます。静的関数は、オブジェクトが作成される前でも存在します。

静的クラスはインスタンス化できず、静的メンバーのみを含めることができます。

静的メソッドは静的キーワード-

を使用して設定されます
public static int getNum() {
   return num;
}

次の例は、静的メソッドと非静的メソッドの使用法を示しています-

using System;

namespace StaticVarApplication {
   class StaticVar {
      public static int num;

      public void count() {
         num++;
      }

      public static int getNum() {
         return num;
      }
   }

   class StaticTester {
      static void Main(string[] args) {
         StaticVar s = new StaticVar();

         s.count();
         s.count();
         s.count();
         s.count();
         s.count();
         s.count();

         Console.WriteLine("Variable num: {0}", StaticVar.getNum());
         Console.ReadKey();
      }
   }
}

  1. Javaでの静的バインディングと動的バインディング

    はい!コンパイラは、メソッドの実行に使用するオブジェクトを知っている場合、参照をオブジェクトに静的にバインドできます。たとえば、静的変数、プライベート変数、final変数は静的バインディングを使用しています。一方、オブジェクトの識別が実行時に行われる場合は、動的バインディングが使用されます。メソッドのオーバーライドは動的バインディングの場合です。 一方、メソッドのオーバーロードは静的バインディングの場合です。

  2. Pythonのクラスメソッドと静的メソッド

    Pythonのクラスメソッドはメソッドであり、クラスにバインドされていますが、そのクラスのオブジェクトにはバインドされていません。静的メソッドも同じですが、いくつかの基本的な違いがあります。クラスメソッドの場合は@classmethodデコレータを指定する必要があり、静的メソッドの場合は@staticmethodデコレータが使用されます。 クラスメソッドの構文。 class my_class: @classmethod deffunction_name(cls, arguments): #Function Body return value 静的メソッ