facebook twitter hatena line email

「Unity/Csharp/クラス/ジェネリックメソッド」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ジェネリックメソッドのアクションサンプル)
 
行32: 行32:
  
 
==ジェネリックメソッドのアクションサンプル==
 
==ジェネリックメソッドのアクションサンプル==
 +
使い方
 
<pre>
 
<pre>
 
using System;
 
using System;
行40: 行41:
 
</pre>
 
</pre>
  
 +
ジェネリックメソッド処理側
 
<pre>
 
<pre>
 
using System;
 
using System;

2025年5月28日 (水) 03:56時点における最新版

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

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

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

呼び出し

// 型省略するパターン(基本はこちら)
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