コガネブログ

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

【C#】配列やリストから目的の値に最も近い値を取得する拡張メソッド

参考サイト様

差し替え・Minで目的の値に最も近い値を選ぶ 【▲→川俣晶の縁側→技術関連執筆情報→『【省エネ対応】 C#プログラムの効率的な書き方 LINQ to Objects マニアックス』読者サポート】

ソースコード

using System;
using System.Collections.Generic;
using System.Linq;

public static class IEnumerableExtensions
{
    /// <summary>
    /// 目的の値に最も近い値を返します
    /// </summary>
    public static int Nearest( 
        this IEnumerable<int> self, 
        int target
    )
    {
        var min = self.Min( c => Math.Abs( c - target ) );
        return self.First( c => Math.Abs( c - target ) == min );
    }
}

使い方

var list = new [] { 1, 2, 4, 8, 16 };
Debug.Log( list.Nearest( 10 ) ); // 8