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

提供: 初心者エンジニアの簡易メモ
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の4版が非表示)
5行目: 5行目:
呼び出し
呼び出し
<pre>
<pre>
// 型省略するパターン(基本はこちら)
Util.DisplayInfo("Hello");
Util.DisplayInfo("Hello");
Util.DisplayInfo(42);
Util.DisplayInfo(42);
26行目: 27行目:
出力
出力
<pre>
<pre>
値: 1, 型: Int32
値: 42, 型: Int32
値: Hello, 型: String
値: Hello, 型: String
</pre>
==ジェネリックメソッドのアクションサンプル==
使い方
<pre>
using System;
using UnityEngine;
var myAction = new Action<SpecialItem>(item => Debug.Log(item.Name));
Util.ExecuteAction(myAction); // クラスを内部生成
Util.ExecuteAction(myAction, new SpecialItem { Name = "Test" }); // クラスを渡す場合
</pre>
ジェネリックメソッド処理側
<pre>
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);
    }
}
</pre>
出力
<pre>
Special Item
Test
</pre>
</pre>

2025年5月27日 (火) 18: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