コガネブログ

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

【C#】Rubyライクなループ処理を拡張メソッドで実現する

はじめに

for (int i = 0; i < MAX; i++)
{
    Debug.Log(i);
}

上記のような単純なループ処理はよく記述しますが
ループ変数の宣言や終了条件の記述、ループ変数のインクリメントなど
処理内容の単純さに比べると構文は冗長です

なので、下記のような拡張メソッドを用意すると
もっと簡潔にループ処理を記述できるようになります

ソースコード

/// <summary>
/// int 型の拡張メソッドを管理するクラス
/// </summary>
public static partial class IntExtensions
{
    /// <summary>
    /// 指定された count の回数分処理を繰り返します
    /// </summary>
    /// <param name="count">繰り返す回数</param>
    /// <param name="act">実行する Action デリゲート</param>
    public static void Times(this int count, Action act)
    {
        for (int i = 0; i < count; i++) 
        {
            act();
        }
    }
}

使い方

MAX.Times(i => Debug.Log(i));