0
1

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#・Unity】安全な変数宣言へ getter / setterの使い方

Posted at

はじめに

C#で変数の値にアクセス・制御する方法として使われるのが getter / setter、つまりプロパティです。

特に public で外部に公開する値は、そのまま変数として公開するのではなく、適切に管理・保護するプロパティを使います。

🔰 基本の書き方

Player.cs
private int _health;

public int Health
{
    get { return _health; }
    set { _health = value; }
}
  • get → 値を取り出す
  • set → 値を設定する

使用例:

Game.cs
player.Health = 100;
int hp = player.Health;

アクセス修飾子の名前の付け方の慣習

C#ではアクセスレベルに応じた命名の慣習があります。

アクセス修飾子 名前の付け方 使用例
private フィールド camelCase(頭小文字)+ 先頭に _ をつける _health, _score, _isAlive
public プロパティ PascalCase(頭大文字) Health, Score, IsAlive
定数 ALL_CAPS(全て大文字) PI, DEFAULT_SPEED
local 変数 camelCase(頭小文字) health, score, playerName

✅ 自動実装プロパティ(シンプル)

値の検証や制御が不要な場合は、以下のように短く書けます:

public int Score { get; set; }

裏で自動的にフィールドが生成されるため、単純なデータ保持には非常に便利です。

🔒 読み取り専用プロパティ(getterのみ)

private int _maxHealth = 100;

public int MaxHealth
{
    get { return _maxHealth; }
}

または:

public int MaxHealth { get; } = 100;

✍️ 書き込み専用プロパティ(setterのみ)

private int _damage;

public int Damage
{
    set { _damage = value; }
}

読み取り不可のプロパティにすることもできますが、あまり多くは使われません。

🎯 バリデーション付きプロパティ

private int _level;

public int Level
{
    get { return _level; }
    set
    {
        if (value >= 0)
        {
            _level = value;
        }
    }
}

setter で条件を付けることで、安全な値だけを受け付けることができます。
バリデーション以外でも値をセットする時に何かしら動作を付け加えたい時とかにも使えます。(フォーマット等)

🧪 private setter + public getter(外部から読み取りのみ可)

public int Id { get; private set; }

public Player(int id)
{
    Id = id;
}

外部から値の変更はできず、初期化のみ許可したいときに便利なパターンです。

📦 static プロパティ

Unityなどで、ゲーム全体でスコアや設定値を共有したい場合、static を使って以下のように定義します:

public static int GlobalScore { get; set; }

使い方:

GameManager.GlobalScore += 10;

全シーン・全スクリプトで同じ値を使いまわせます。

おわりに

C#のプロパティは、単なる値の取得・設定にとどまらず、安全性・可読性・拡張性を高める重要な機構です。

プロパティを正しく使い分けることで、クラス設計がぐっと洗練されます。
慣れないうちは命名規則とアクセス修飾子の組み合わせに気を配ることから始めてみましょう!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?