「Unity/Csharp/クラス/ジェネリックメソッド」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「==ジェネリックメソッドとは== 型を呼び出し側で、宣言できるもの ==ジェネリックメソッドのサンプル== 呼び出し <pre> DisplayInf...」 |
|||
| (同じ利用者による、間の6版が非表示) | |||
| 5行目: | 5行目: | ||
呼び出し | 呼び出し | ||
<pre> | <pre> | ||
DisplayInfo("Hello"); | // 型省略するパターン(基本はこちら) | ||
DisplayInfo(42); | Util.DisplayInfo("Hello"); | ||
Util.DisplayInfo(42); | |||
// 型省略しないパターン | // 型省略しないパターン | ||
DisplayInfo<string>("Hello"); | Util.DisplayInfo<string>("Hello"); | ||
DisplayInfo<int>(42); | Util.DisplayInfo<int>(42); | ||
</pre> | </pre> | ||
ジェネリックメソッド本体 | ジェネリックメソッド本体 | ||
<pre> | <pre> | ||
public | public class Util | ||
{ | { | ||
public static void DisplayInfo<T>(T item) | |||
{ | |||
Debug.Log($"値: {item}, 型: {typeof(T).Name}"); | |||
} | |||
} | } | ||
</pre> | |||
出力 | |||
<pre> | |||
値: 42, 型: Int32 | |||
値: 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