unity c# 泛型委托
2016-03-19 21:38
701 查看
我们可以通过这种方式老声明一个泛型委托
public delegate T DataChange<T>(T arg);
我们可以在unity中写个例子来看一下泛型委托的用法,目录结构如下:
DeleteT中的代码如下
TestDeleteT中的代码如下
这样我们就可以简单的知道泛型委托的用法了。
Action委托
在System空间对Action的定义为
delegate void Action();
delete void Action<int T>();
delete void Action<int T1,int T2>();
........以此类推,最多到T16
也就是我们可以这样来使用Action
Func委托
在System空间对Func的定义如下
delegate TResult Func<out TResult>()
delegate TResult Func<int T,out TResult>()
delegate TResult Func<int T1,int T2,out TResult>()
........以此类推,最多到T16
也就是我们可以这样来使用Func
public delegate T DataChange<T>(T arg);
我们可以在unity中写个例子来看一下泛型委托的用法,目录结构如下:
DeleteT中的代码如下
using UnityEngine; using System.Collections; public class DeleteT { // Use this for initialization public delegate T DataChange<T>(T arg); public static T Transform<T>(T value, DataChange<T> t) { value = t(value); return value; } }
TestDeleteT中的代码如下
using UnityEngine; using System.Collections; public class TestDeleteT : MonoBehaviour { public void GetChangeAge() { int age = 10; int value = DeleteT.Transform(age, ChangeAge); Debug.Log(" value "+ value); } public int ChangeAge(int age) { return age * age; } }
这样我们就可以简单的知道泛型委托的用法了。
Action委托
在System空间对Action的定义为
delegate void Action();
delete void Action<int T>();
delete void Action<int T1,int T2>();
........以此类推,最多到T16
也就是我们可以这样来使用Action
public class MethodAction : MonoBehaviour { public void TestAction() { Action a = DataChange; a(); Action<int> age = DataChange; age(11); } public void DataChange() { Debug.Log("DataChange "); } public void DataChange(int age) { Debug.Log("DataChange age "+ age); } }
Func委托
在System空间对Func的定义如下
delegate TResult Func<out TResult>()
delegate TResult Func<int T,out TResult>()
delegate TResult Func<int T1,int T2,out TResult>()
........以此类推,最多到T16
也就是我们可以这样来使用Func
public class MethodFunc : MonoBehaviour { public void TestFunc() { Func<int,int> age = DataChange; int data = age(11); Debug.Log("data " + data); } public int DataChange(int age) { return age * age; } }
相关文章推荐
- unity c# 标准事件模式
- unity c# 事件
- unity c# 接口
- Unity4.6 UI按钮绑定事件(一)
- 详解Unity 4.6新UI的布局
- 学习Unity 4.6新GUI系统
- Unity ugui 和 模型 粒子的层级管理
- unity3d热更新插件uLua学习整理
- 初学者学习 - Unity中的热更新 - Lua和C#通信
- Unity3D小小小经验篇——Canvas
- Unity3d 着色器语法(Shader)
- Unity3D Shader
- Change Queue Not Work In Unity Shader
- unity-programming-c#-2-new project
- Unity3D&AI:寻路(1):A星寻路,在Unity上用C#代码实现。
- unity 键盘检测代码编码总结
- unity使用UGUI创建摇杆
- unity使用UGUI创建摇杆
- disunity unity3d资源破解
- Unity3D 设置Label TextField字体字号大小