0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】staticとは?

Posted at

staticとは?

一言でいうと、
「クラス全体で共有されるメンバー」を作るキーワードです。
ふつう、クラスを使うときは new でインスタンスを作りますが、
static をつけると、「インスタンスを作らずに使える」ようになります。

class Counter
{
    public static int Total = 0; // クラス全体で共有
    public int Id;

    public Counter()
    {
        Total++; // 全員で1つのTotalを共有
        Id = Total;
    }
}

使うとこうなります

var a = new Counter(); // Total = 1
var b = new Counter(); // Total = 2

Console.WriteLine(Counter.Total); // 2

ここがポイント:

  • Total全インスタンスで共通
  • Idそれぞれのインスタンスごと

staticメソッドとは?

クラスを作らなくても呼び出せる便利なメソッドです。
たとえば、計算用のメソッドをまとめたいときに便利です。

public static class MathUtil
{
    public static int Square(int x)
    {
        return x * x;
    }
}

// 呼び出し
int result = MathUtil.Square(5); // 25

MathUtil」はインスタンスを作らず、そのまま呼べます。
static クラスは「全てのメンバーがstaticであること」がルールです。

staticコンストラクタ

static なデータを最初に一度だけ初期化したいときに使います。

class Config
{
    public static readonly string AppName;

    static Config() // 一度だけ実行される
    {
        AppName = "MyApp";
        Console.WriteLine("Config 初期化!");
    }
}

Config.AppName にアクセスした瞬間、
最初の一回だけコンストラクタが呼ばれます。

const と static readonly の違い

種類 タイミング 値の変更 よく使う場面
const コンパイル時 変更不可 定数
static readonly 実行時 1回だけ代入OK 設定値など
public const double PI = 3.14;
public static readonly DateTime StartTime = DateTime.Now;

static の注意点

グローバル変数みたいに使いすぎない

どこからでも触れる=便利ですが、
裏を返すと「どこで変更されたか分からなくなる」リスクもあります。

メモリに残り続ける

static はアプリが終わるまで消えません。
大量データを static に持たせるのはNGです。

staticが向いている場面

  • 計算系の関数
  • 変更しない設定値・定数
  • 一度だけ使う共通データ(ログ設定など)

まとめ

内容 説明
static クラス全体で共有されるメンバーを作る
メリット インスタンス不要・共通データ管理が簡単
デメリット グローバル状態・テストが難しくなる
よく使う場面 定数、ユーティリティ、設定

static は使い方次第で便利にも危険にもなります。

  • 定数やヘルパー関数には◎
  • 態を持たせすぎるのは×

迷ったら「これは全員で共有すべきデータか?」と考えるのがコツ!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?