コガネブログ

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

【Unity】Unity 2021.2 からLINQ で ToHashSet・SkipLast・TakeLast が標準で使えるようになった

概要

Unity 2021.2 から LINQ で ToHashSet・SkipLast・TakeLast が標準で使えるようになった
(もしかしたら Unity 2021.1 から使えるかも?)

using System.Linq;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Start()
    {
        var array = new[] { 1, 2, 2, 3, 3, 3 };

        // 1, 2, 3
        foreach ( var x in array.ToHashSet() )
        {
            Debug.Log( x );
        }

        // 1, 2, 2
        foreach ( var x in array.SkipLast( 3 ) )
        {
            Debug.Log( x );
        }

        // 3, 3, 3
        foreach ( var x in array.TakeLast( 3 ) )
        {
            Debug.Log( x );
        }
    }
}

もしも独自で ToHashSet・SkipLast・TakeLast を拡張メソッドで定義していると
独自の拡張メソッドと System.Linq の拡張メソッドが競合して
Unity 2021.2 にアップデートした時にコンパイルエラーが発生する可能性がある