「Unity/Csharp/クラス/ジェネリックメソッド」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→ジェネリックメソッドのサンプル) |
|||
行29: | 行29: | ||
値: 42, 型: 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月28日 (水) 03:55時点における版
ジェネリックメソッドとは
型を呼び出し側で、宣言できるもの
ジェネリックメソッドのサンプル
呼び出し
// 型省略するパターン(基本はこちら) 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