【C#.NET解説】「static」修飾子キーワード:静的クラスの特徴と活用法 初心者用解説

2024年12月13日金曜日

キーワード(構文) 基本

t f B! P L

名前空間 System

static

自己紹介

おはようございます、私は暁の神。静的クラスの光をもたらす案内役です。静的クラスは少し特別な存在ですが、初心者の方でも安心してください。丁寧に説明していきますね。

基本機能

静的クラスは、インスタンス化できない特別なクラスです。「static」キーワードを使って定義します。全てのメンバーも「static」である必要があります。

C#
using System;

static class Utilities
{
    public static void Greet(string name)
    {
        Console.WriteLine($"こんにちは、{name}さん!");
    }
}

class Program
{
    static void Main()
    {
        Utilities.Greet("太郎"); // "こんにちは、太郎さん!" と表示
    }
}

よく使う場面と注意点

静的クラスは、共通の機能をまとめる場合によく使われます。その利点と欠点を以下にまとめました。

  • メリット: インスタンス化不要で、共通のメソッドやデータを手軽に利用できるため、シンプルなコードを記述できます。
  • デメリット: インスタンスを生成できないため、状態を管理する用途には適していません。例えば、複数のオブジェクトごとに異なるデータを扱う必要がある場合には不向きです。

例えば、静的クラスを利用すると次のような共通メソッドを簡単に作成できます。

C#
using System;

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

class Program
{
    static void Main()
    {
        int result = MathUtilities.Add(3, 5); // 結果は8
        Console.WriteLine(result);
    }
}

さまざまなメソッドで広がる活用例

静的クラスは便利なメソッドを提供できます。例えば、文字列操作のユーティリティを作ることができます。

C#
using System;

static class StringUtilities
{
    public static string Reverse(string input)
    {
        char[] charArray = input.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
}

class Program
{
    static void Main()
    {
        string reversed = StringUtilities.Reverse("神話"); // 結果は「話神」
        Console.WriteLine(reversed);
    }
}

具体的な使い方

静的クラスは、設定値を一元管理する場合にも有用です。例えば、以下のように2つのクラスから参照することができます。

C#
using System;

static class AppSettings
{
    public static string AppName = "静的クラスアプリ";
    public static int Version = 1;
}

class ComponentA
{
    public void DisplaySettings()
    {
        AppSettings.Version = 2; // Versionを更新
        Console.WriteLine($"ComponentA: {AppSettings.AppName} (Version {AppSettings.Version})");
    }
}

class ComponentB
{
    public void DisplaySettings()
    {
        Console.WriteLine($"ComponentB: {AppSettings.AppName} (Version {AppSettings.Version})");
    }
}

class Program
{
    static void Main()
    {
        ComponentA componentA = new ComponentA();
        ComponentB componentB = new ComponentB();

        componentA.DisplaySettings();
        componentB.DisplaySettings();
    }
}

上記のコードを実行すると、以下のような出力が得られます:

  • ComponentA: 静的クラスアプリ (Version 2)
  • ComponentB: 静的クラスアプリ (Version 2)

その他の便利なメソッド

以下は静的クラスで実装できる便利なメソッド例です。

C#
using System;

static class Calculator
{
    public static int Multiply(int a, int b) => a * b;
    public static double Divide(double a, double b) => b != 0 ? a / b : throw new DivideByZeroException();
    public static int Subtract(int a, int b) => a - b;
    public static bool IsEven(int number) => number % 2 == 0;
    public static double Power(double baseNumber, double exponent) => Math.Pow(baseNumber, exponent);
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Calculator.Multiply(2, 3)); // 6
        Console.WriteLine(Calculator.Divide(10, 2)); // 5
        Console.WriteLine(Calculator.Subtract(10, 5)); // 5
        Console.WriteLine(Calculator.IsEven(4)); // True
        Console.WriteLine(Calculator.Power(2, 3)); // 8
    }
}

以上で静的クラスの解説を終わります。あなたのプログラミングに役立つことを願っています!

このブログを検索

QooQ