泛型 协变与逆变

定义:协变out和逆变in是在接口和委托中用于修饰泛型的,主要用于定义泛型类型的使用区域。

语法:<outT>T的泛型类型只能用于返回值类型<inT>T的泛型类型只能用于参数列表类型

应用:Func<T>

public delegate TResult Func<in T1,in T2, out TResult> (T1 arg1,T2 arg2);

复制代码
//接口
interface I_Out<out T> {    
    T Move();//协变只能是返回值类型
    //void Run(T speed); //报错:协变的泛型类型只能当做返回值类型使用
}
interface I_In<in T> {
    //T Move(); //报错:逆变的泛型类型只能当做参数列表类型使用
    void Run(T speed); //逆变只能是参数列表类型
}
//委托
delegate R CustomDelegate<in V, in E, out R>(V v, E e);

public class Mainclass {
    //根据委托的类型定义存储函数
    public static string End(string str, char ch)
    {
        return str + ch;
    }
    public static void Main()
    {
        CustomDelegate<string, char, string> custom = End;
        Debug.Log(custom("jack", '$'));
    }
}
相关推荐
xingpanvip2 分钟前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
guygg889 分钟前
基于遗传算法的双层规划模型求解MATLAB实现
开发语言·matlab
呱牛do it9 分钟前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
凯瑟琳.奥古斯特28 分钟前
SQLAlchemy核心功能解析
开发语言·python·flask
卷Java39 分钟前
GPTQ vs AWQ vs GGUF:模型量化工具横向测评
开发语言·windows·python
charlie1145141911 小时前
嵌入式C++工程实践第20篇:GPIO 输入模式内部电路 —— 芯片是如何“听“到外部信号的
开发语言·c++·stm32·单片机
消失的旧时光-19431 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP1 小时前
Redis--发布订阅命令和Redis事务
java
PAC_3Dame1 小时前
记一次真实的线上OOM
java
xinhuanjieyi1 小时前
极语言让ai学习的方法
开发语言·学习