Unity 泛型基础应用
代码很简单看一下就明白了
如果实在有什么不明白的地方 那就直接留言 看到我会回复的
废话不多说,直接上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 泛型基础应用
/// </summary>
public class Genericity_ZH : MonoBehaviour
{
private void Start()
{
//泛型 不限定类型 看具体需求进行更改
Genericity01<string> _Test1 = new Genericity01<string>();
//在此传入的名字是 "Maddie" (可以将"T"看作是string类型)
_Test1._Info = "Maddie";
Genericity01<int> _Test2 = new Genericity01<int>();
//在此传入的 年龄 是 20 (可以将"T"看作是int类型)
_Test2._Info = 20;
//泛型 限定类型为 GenericityBase 或 其他类 看需求
GenericityBase _GenericityBase = new GenericityBase();
//Genericity02<限定只能为 GenericityBase 类型> 可以将"T"看作是 GenericityBase 类型
Genericity02<GenericityBase> _Test3 = new Genericity02<GenericityBase>();
_Test3._Info = _GenericityBase;
_Test3._Info._Name = "Maddie";
_Test3._Info._Age = 200;
//泛型 第二类 限定类型
//Genericity03<任意类型,GenericityBase> 在此"T"相当于string类型
//出身年月日时 string 类型的 "20200514" 名字叫做 "Maddie01" 年龄时 20
Genericity03<string, GenericityBase> _Test4 = new Genericity03<string, GenericityBase>();
_Test4._Data = "20130610";
_Test4._Info._Name = "Maddie01";
_Test4._Info._Age = 20;
// 出身年月日时 int 类型的 20200514 名字叫做 "Maddie02" 年龄时 20
Genericity03<int, GenericityBase> _Test5 = new Genericity03<int, GenericityBase>();//Water<任意类型,直接收WaterBase类型> 在此"T"相当于int类型
_Test5._Data = 20200514;
_Test5._Info._Name = "Maddie02";
_Test5._Info._Age = 20;
//泛型继承类 范例:
TestChild1 _Test6 = new TestChild1();
_Test6._Data = "Maddie";
Testchild4 _Test7 = new Testchild4();
_Test7._Data = 100;
Son1 _Son1 = new Son1();
_Son1._Data1 = "Maddie";
_Son1._Data2 = 100;
//泛型方法 应用 可传入所需 类型变量
GenericityMethod<string>("Maddie");
GenericityMethod<int>(20);
GenericityMethod<float>(3.14f);
GenericityMethod<Vector3>(new Vector3(1, 1, 1));
}
/// <summary>
/// 泛型 方法
/// </summary>
/// <typeparam 类型="T"></typeparam>
/// <param 变量="t"></param>
/// <returns></returns>
public T GenericityMethod<T>(T _Variable)
{
return _Variable;
}
}
/// <summary>
/// 泛型 不限定类型
/// </summary>
/// <typeparam 泛型 ="T"></typeparam>
public class Genericity01<T>
{
//信息(属性)
public T _Info;
}
/// <summary>
/// 泛型 限定类型为 GenericityBase
/// </summary>
/// <typeparam 泛型 ="T"></typeparam>
public class Genericity02<T> where T : GenericityBase
{
public T _Info;//信息(属性) 可看作"T"的类型是 GenericityBase
}
/// <summary>
/// 泛型 第二类 限定类型
/// </summary>
/// <typeparam 泛型 不限定类型 ="T"></typeparam>
/// <typeparam 限定"U"只能接收 GenericityBase 类型 ="U"></typeparam>
public class Genericity03<T, U> where U : GenericityBase
{
//出厂日期(可接受int型的20130610,或者string类型的"20130610");
public T _Data;
//信息(名字/年龄)
public U _Info;
}
/// <summary>
/// 泛型 限定类
/// </summary>
public class GenericityBase
{
//名字
public string _Name;
//年龄
public int _Age;
}
/// <summary>
/// 泛型继承
/// </summary>
/// <typeparam 无限制泛型="T"></typeparam>
#region 单个占位符
public class Test<T>
{
public T _Data;
}
public class TestChild1 : Test<string> { }
public class Testchild2<T>: Test<string> { }
public class TestChild3<T>: Test<T> { }
public class Testchild4 : Test<int> { }
#endregion
#region 多个占位符
public class Fater<T, U>
{
public T _Data1;
public U _Data2;
}
public class Son1 : Fater<string, int> { }
public class Son2<T,U> : Fater<string, int> { }
public class Son3<T,U> : Fater<T, U> { }
#endregion
好了,暂时就这么多,以后有时间再补充吧
就这样,与君共勉。