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

C#の静的クラスと非静的クラスの違いとは?初心者向けにわかりやすく解説

C#では、クラスを「静的クラス(static class)」と「非静的クラス(通常のクラス)」の2種類に分けて考えることができます。一見似ていますが、インスタンス化の可否やメンバーへのアクセス方法など、重要な違いがいくつかあります。ここでは、それぞれの特徴と使い分けのポイントをコード例とともに解説します。

静的クラスと非静的クラスの主な違い

  • インスタンス化の可否: 非静的クラスは new キーワードを使ってインスタンス化できますが、静的クラスはインスタンス化できません。つまり、静的クラス型の変数を作成することはできません。
  • 含められるメンバー: 静的クラスには静的メソッドや静的プロパティなど、静的メンバーのみを定義できます。インスタンスメンバーを持つことはできません。
  • 非静的クラスの場合: 非静的クラスには、インスタンスメソッドと静的メソッドの両方を自由に定義できます。
  • メンバーへのアクセス方法: 静的クラスのメンバーには、オブジェクトを介さず、クラス名そのものを使って直接アクセスします(例:Calculate.Add(1, 2))。
  • 継承: 静的クラスは暗黙的に sealed(シールドクラス)として扱われるため、継承したり、他のクラスの基底クラスとして使ったりすることはできません。

静的クラスの例

静的クラスは宣言時に static を付けます。ユーティリティ的な処理をまとめるのに適しています。

public static class Calculate
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

呼び出し側では、インスタンスを作成せずにクラス名で直接アクセスします。

// クラス名で直接呼び出す
int result = Calculate.Add(3, 5); // result は 8

非静的クラスの例

通常のクラスは new でインスタンスを生成してから利用します。

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

// インスタンス化して使用する
var calc = new Calculator();
int result = calc.Add(3, 5); // result は 8

使い分けのポイント

状態(フィールド)を持たず、入力に対して結果を返すだけの共通処理(数学計算、文字列変換、ログ出力など)は静的クラスにまとめると便利です。一方、データを保持しながら振る舞いを持たせたい場合や、継承による拡張を想定している場合は、非静的クラスを選択しましょう。

  1. Wi-Fi 6と5Gの違いとは?特徴・速度・使い分けを徹底解説

    5Gネットワークは、SNSなどでも頻繁に話題になる注目の技術です。同様に、Wi-Fi 6への期待も高まっていますが、これは5Gとはまったく異なる技術です。本記事では、Wi-Fi 6と5Gネットワークの違いをわかりやすく解説します。 Wi-Fi 6とは? Wi-Fi 6は、IEEE 802.11ax規格に基づく新しい認証プログラムです。従来のWi-Fi技術と異なる最大の特徴は、より遠い距離でも高速な接続を実現できる点にあります。複数のデバイスが同時に接続されていても安定したパフォーマンスを発揮し、電源環境に多少の問題があっても性能が低下しにくいという優れた特性を持っています。 Wi-Fi 6は

  2. Windows 10とWindows 11の違いを徹底比較!アップグレードすべきか判断するポイント

    Microsoft(マイクロソフト)は、数々の新機能と改善点を盛り込んだ最新OS「Windows 11」をリリースしました。一方で、これまで数多くのパッチやアップデートが適用されてきたWindows 10は、新しいWindows 11よりも安定したOSと言えます。Microsoftによると、Windows 10のサポートは2025年以降に終了する予定のため、Windows 11へアップグレードするか、Windows 10を使い続けるかを検討する時間は十分にあります。この記事では、Windows 10とWindows 11の性能・機能・改善点を比較し、新しいOSへ移行すべきか、それともWindo