以下の内容はhttps://baba-s.hatenablog.com/entry/2020/10/12/090000より取得しました。


【Unity】Unity で Immutable Collections を使用できるようにする「Unity3D Immutable Collections」紹介

はじめに

「Unity3D Immutable Collections」を Unity プロジェクトに導入することで
Unity で Immutable Collections を使用できるようになります

使用例

using Izzo.Collections.Immutable;
using UnityEngine;

public sealed class Example : MonoBehaviour
{
    private void Awake()
    {
        var list = ImmutableList.Create( 1, 2, 3 );

        list.Add( 4 );
        list.Remove( 1 );

        // 1,2,3
        Debug.Log( string.Join( ",", list ) );
    }
}

例えば ImmutableList を使用して Add や Remove を呼び出しても list 自体は変化しない

using Izzo.Collections.Immutable;
using UnityEngine;

public sealed class Example : MonoBehaviour
{
    private void Awake()
    {
        var list = ImmutableList.Create( 1, 2, 3 );

        var addedList   = list.Add( 4 );
        var removedList = addedList.Remove( 1 );

        // 1,2,3,4
        Debug.Log( string.Join( ",", addedList ) );

        // 2,3,4
        Debug.Log( string.Join( ",", removedList ) );
    }
}

変化後の状態は戻り値で受け取ることができる

using Izzo.Collections.Immutable;
using System.Collections.Generic;

public sealed class Example
{
    private List<int> m_list = new List<int>();

    public ImmutableList<int> List => m_list.ToImmutableList();
}

リストを外部に公開したい時に ToImmutableList することで
不変なリストとして公開することもできる




以上の内容はhttps://baba-s.hatenablog.com/entry/2020/10/12/090000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14