c# 泛型的抗变和协变
2024-10-07 13:15:12
namespace test
{ // 泛型的协变,T 只能作为返回的参数
public interface Class1<out T>
{
T Get();
int Count { get; }
}
public class Class2 : Class1<String>
{
public String Get()
{
return "";
}
public int Count { get { return ; } }
}
// 泛型的抗变,T在方法中只能作为传入参数
public interface Class3<in T>
{
void Get(T t); // 作为参数
// T GetT();//报错
}
public class Class4 : Class3<int>
{
public void Get(int age)
{ } }
}
使用out(协变)可以实例化 子类,协变 : 可以让右边 用子类,让泛型更方便
不加 out 报错:
逆变 : 可以让右边 用父类,实例化父类
泛型委托
public delegate void delega<in T>(string name); static void get<T>(string name)
{ }
static void Main(string[] args)
{
delega<int> delega = new delega<int>(get<int>);
delega += new delega<int>(get<string>);
最新文章
- java---相亲练习
- 鸟哥的linux私房菜之档案与文件系统的压缩与打包
- WPF Step By Step 完整布局介绍
- JavaScript Type Conversion
- ModSecurity--web应用防火墙
- 九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)
- Java---类反射(2)---类反射加强
- python常用的一些东西——sys、os等
- Nodejs.sublime-build 在sublime3中的配置
- hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))
- mysql3 - 常规数据检索、常见操作与函数
- 【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle
- 从零开始学 Web 之 Vue.js(四)Vue的Ajax请求和跨域
- libvirt虚拟库
- C# 左右补零
- 学习Spring Boot:(十三)配置 Shiro 权限认证
- [转载] My97DatePicker日历实现开始日期小于结束日期验证
- 执行Android项目时指定特定的AVD进行測试
- mysql-存储过程(转载)
- mtv网站架构模式适合企业网站应用吗?