Unity 泛型基础应用

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
好了,暂时就这么多,以后有时间再补充吧
就这样,与君共勉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maddie_Mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值