nullチェックと var isEmptyの使い方

広告

1. 今回のコード

var isEmpty = null == _ownedItem;

この1行はシンプルに見えますが、実務で重要な考え方が詰まっています。


2. このコードがやっていること

まずは分解して理解します。

bool isEmpty = (null == _ownedItem);

つまり:

  • _ownedItem が null かどうか を調べる
  • 結果(true / false)を
  • isEmpty という変数に入れている

3. varの意味

var isEmpty = null == _ownedItem;

var は

右側から型を自動で決める

という意味です。

今回の場合:

null == _ownedItem  → true / false

なので、

bool isEmpty

になります。


4. なぜ変数に入れるのか?

■ 直接書く場合

if (_ownedItem == null)
{
    Debug.Log("空です");
}

■ 変数に入れる場合

var isEmpty = _ownedItem == null;

if (isEmpty)
{
    Debug.Log("空です");
}

5. 変数にするメリット

① 意味がわかりやすくなる

var isEmpty = _ownedItem == null;

→ 「空かどうか」という意味が名前で伝わる


② 同じ条件を何度も書かなくてよい

var isEmpty = _ownedItem == null;

if (isEmpty)
{
    Debug.Log("空です");
}

if (!isEmpty)
{
    Debug.Log("データあり");
}

③ 条件が複雑でも読みやすい

var isEmpty = _ownedItem == null || _ownedItem.Count == 0;
if (isEmpty)

→ 読む側が楽になる


6. null == _ownedItemという書き方について

普通はこう書きます:

_ownedItem == null

ですが、次の書き方もあります:

null == _ownedItem

なぜこんな書き方があるのか?

昔の言語(C言語など)では、

if (_ownedItem = null) // ← ミス(代入)

が通ってしまうため、

if (null == _ownedItem)

と書くことでミス防止をしていました。


C#ではどうか?

C#ではこのミスはコンパイルエラーになるので、

👉 どちらでもOK


7. Unityでの注意点

Unityでは特殊なnullがあります。

Destroy(obj);

したあと:

if (obj == null)

→ trueになる(見た目null)


そのため

var isEmpty = obj == null;

のように書くことで

  • 本当にnull
  • Destroyされたオブジェクト

両方をまとめて扱えます。


8. 実務でのおすすめ書き方

■ 基本形

var isEmpty = _ownedItem == null;

■ 複合条件

var isEmpty = _ownedItem == null || _ownedItem.Count == 0;

9. よくない例

if (_ownedItem == null || _ownedItem.Count == 0 || _ownedItem.Name == "")

→ 長くて読みにくい


改善

var isEmpty = _ownedItem == null || _ownedItem.Count == 0;

if (isEmpty)
{
    // 処理
}

10. 重要な考え方

この資料で一番大事なのはここです。


■ 条件に名前をつける

var isEmpty = _ownedItem == null;

これは

👉 「判定」ではなく
👉 「意味」を作っている


11. まとめ

  • var は型を自動で決める
  • nullチェック の結果は bool
  • 条件は変数にすると読みやすくなる
  • null == 変数 は書き方の違いだけ
  • Unityでは null の扱いに注意

12. 演習

① 次を変数にしてください

if (player == null)

② 次を読みやすくしてください

if (hp <= 0 || isDead == true)

③ 次に名前をつけてください

enemyList.Count == 0

訪問数 10 回, 今日の訪問数 10回

広告

C#,Unity

Posted by hidepon