泛型 协变与逆变

定义:协变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", '$'));
    }
}
相关推荐
海的透彻12 分钟前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat25 分钟前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
北京中科新远科技30 分钟前
高速交换机端口预算怎么做?下行、上联、拆分和冗余计算框架
开发语言·php
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
后台模板学习1 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one1 小时前
算法--构造
java·数据结构·算法
SL_staff1 小时前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
AI源码2 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
旖旎夜光2 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
SL_staff2 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈