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

C#の静的メンバー関数(staticメソッド)とは?特徴と使い方を実例付きで解説

C#における静的メンバー関数(staticメソッド)は、クラスのインスタンスを作成しなくても呼び出せる特別なメソッドです。この記事では、静的関数の基本的な特徴と、実際のコード例を使った使い方をわかりやすく解説します。

静的メンバー関数の主な特徴

静的メンバー関数には、以下のような重要な特徴があります。

  • 静的変数のみにアクセス可能: 静的関数の内部では、静的(static)な変数やメンバーにしかアクセスできません。インスタンス変数には直接アクセスできない点に注意が必要です。
  • オブジェクト生成前から存在する: 静的関数はクラスがロードされた時点で存在するため、オブジェクト(インスタンス)が作成される前でも利用できます。
  • クラス名で直接呼び出せる: インスタンス化せずに「クラス名.メソッド名」の形式で呼び出すことができます。

静的関数の宣言方法

静的関数としてメソッドを定義するには、staticキーワードを使用します。基本構文は次のとおりです。

public static int getNum() {}

静的関数の使用例

以下は、静的変数と静的関数を組み合わせた実際のコード例です。カウント用の静的変数numの値を、静的関数getNum()で取得しています。

using System;

namespace Demo {
    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();

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

コードのポイント

  • numは静的変数として宣言されているため、すべてのインスタンスで値が共有されます。
  • count()は通常のインスタンスメソッドですが、静的変数numを操作できます。
  • getNum()は静的関数なので、StaticVar.getNum()のようにクラス名を使って直接呼び出しています。これは、静的関数がオブジェクトの生成に依存しないことを示しています。

実行結果

上記のプログラムを実行すると、count()が3回呼び出されているため、出力は次のようになります。

Variable num: 3

まとめ

C#の静的メンバー関数は、インスタンス化なしでクラスレベルの処理を行うための便利な機能です。ただし、アクセスできるのは静的なメンバーのみという制限があるため、ユーティリティメソッドや計算処理など、状態を持たない処理に適しています。適切に使い分けることで、より効率的で読みやすいコードを書くことができます。

  1. JavaScriptの部分関数(Partial Function)とは?仕組みと実装例をわかりやすく解説

    部分関数(Partial Function)とは、既存の関数を引数として受け取り、それに加えて別の型の引数も同時に受け取れるようにする仕組みです。まず渡された引数の一部を使い、残りの引数を受け取る新しい関数を返します。そして、返された関数が呼び出されるときに、あらかじめ固定しておいた引数とそのときに渡された引数をすべて組み合わせて、元の親関数が実行されます。 この手法は「部分適用(Partial Application)」とも呼ばれ、関数型プログラミングの基本的なテクニックのひとつです。共通する引数を先に束縛しておくことで、処理の再利用性やコードの可読性を高めることができます。 コード例 以下

  2. Javaのクラスメソッド(静的メソッド)とは?基本から使い方まで解説

    Javaにおけるクラスメソッド(静的メソッド)とは、特定のオブジェクトのインスタンスではなく、クラスそのものに対して呼び出されるメソッドのことです。static修飾子を付けることで、すべてのクラスインスタンス間で同じ実装が保証されます。静的メソッドはインスタンス化せずに呼び出すことができるため、アクセスできるのはクラス内の他の静的メンバー(staticなフィールドやメソッド)のみです。インスタンス変数や非staticメソッドには直接アクセスできない点に注意しましょう。Javaの標準ライブラリにも多くの静的メソッドが用意されています。代表的な例としては、Math.random()、System.