facebook twitter hatena line email

Unity/Csharp/クラス/ジェネリックメソッド

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

ジェネリックメソッドとは

型を呼び出し側で、宣言できるもの

ジェネリックメソッドのサンプル

呼び出し

// 型省略するパターン(基本はこちら)
Util.DisplayInfo("Hello");
Util.DisplayInfo(42);

// 型省略しないパターン
Util.DisplayInfo<string>("Hello");
Util.DisplayInfo<int>(42);

ジェネリックメソッド本体

public class Util
{
    public static void DisplayInfo<T>(T item)
    {
        Debug.Log($"値: {item}, 型: {typeof(T).Name}");
    }
}

出力

値: 42, 型: Int32
値: Hello, 型: String

ジェネリックメソッドのアクションサンプル

使い方

using System;
using UnityEngine;
var myAction = new Action<SpecialItem>(item => Debug.Log(item.Name));
Util.ExecuteAction(myAction); // クラスを内部生成
Util.ExecuteAction(myAction, new SpecialItem { Name = "Test" }); // クラスを渡す場合

ジェネリックメソッド処理側

using System;
using UnityEngine;

public class Util
{
    // ジェネリックメソッドにして、任意の型 T を受け取れるようにする
    public static void ExecuteAction<T>(Action<T> action, T item)
    {
        action(item);
    }
    // または、T を内部で生成する場合
    public static void ExecuteAction<T>(Action<T> action) where T : new()
    {
        T item = new T();
        action(item);
    }
}

出力

Special Item
Test