nameofとは何か。C#で修正漏れを防止する|Unityゲーム制作

今回はUnityというよりC#のプログラム的なメモです。

修正漏れを防止する

例えば、下記の様にInvokeRepeatingでは呼び出すメソッド(SquareIns)を文字列として指定します。

using UnityEngine;

public class CreateSquare : MonoBehaviour
{
    [SerializeField] private GameObject _SquarePrefab;
    [SerializeField] private float _interval;

    void Start()
    {
        InvokeRepeating("SquareIns", 0f, _interval);
    }
    private void SquareIns()
    {
        Instantiate(_SquarePrefab);
    }
}

メソッド名を変更するとコンパイルエラーとならず、実行した時にエラーとなります。

しかし、下記の様にnameofで囲うとコンパイルエラーになり、修正漏れに気付きます。

        InvokeRepeating(nameof(SquareIns), 0f, _interval);

公式リファレンスは下記です。

switch文の中でも使えそうで便利ですね。

nameofを使わない方が良い場合も

nameofはコルーチンの呼び出しでも利用できるけど、パラメータがあるコルーチンの場合はnameofを利用しない方が自然ですかね。

        StartCoroutine(SquareIns(num));
タイトルとURLをコピーしました