はじめに
sealed record Character( int Id, string Name );
Unity 2021.2 でレコード型を使おうとしたら
The predefined type 'System.Runtime.CompilerServices.isExternalinit must be defined or imported in order to declare init-only setter.
Predefined type 'System.Runtime.CompilerServices.IsExternalInit' is not defined or imported
これらのエラーが発生した
解決方法
using System.ComponentModel; namespace System.Runtime.CompilerServices { [EditorBrowsable(EditorBrowsableState.Never)] internal class IsExternalInit{} }
上記のコードをプロジェクトに追加したらエラーが発生しなくなって
using UnityEngine; sealed record Character( int Id, string Name ); public sealed class Example : MonoBehaviour { private void Start() { var character = new Character( 25, "ピカチュウ" ); Debug.Log( character.Id ); Debug.Log( character.Name ); } }
レコード型を正常に使えた