コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】構造体のフィールドに初期値を設定する代替案

概要

C# 9.0 までは引数なしコンストラクタを定義できないため
構造体のフィールドに初期値を設定できない

代替案としてフィールドを nullable にして
プロパティの getter でフィールドが null なら初期値を設定する方法がある

using UnityEngine;

public struct Data
{
    private int?   m_number;
    private string m_name;

    public int    Number => m_number ??= 25;
    public string Name   => m_name ??= "ピカチュウ";
}

public class Example : MonoBehaviour
{
    private void Start()
    {
        var data = new Data();
        Debug.Log( data.Number ); // 25
        Debug.Log( data.Name );   // ピカチュウ
    }
}

参考サイト様