C#vs.Java:泛型协变和逆变

C#vs.Java:泛型协变和逆变,c#,java,generics,covariance,contravariance,C#,Java,Generics,Covariance,Contravariance,C#和java都实现了泛型协变和逆变,但方式完全不同:C#将协变和逆变限制在泛型接口上,java将其允许到任何泛型类或方法上 关于语法的具体区别是什么 哪种代码在一种语言中是可能的,而在另一种语言中是不可能的 由于在各自的框架中缺乏集成(即缺少默认集合的实现),实际限制是什么 提前谢谢你 现在这确实是一个令人尖叫的家庭作业…@PAH不同意,这个问题很有趣;右边没有相关的问题真正回答了。。。如果我是一名计算机科学教授,我真的会问我的学生这个问题…:-)Java甚至没有声明站点差异,所以可以说它

C#
java
都实现了泛型协变和逆变,但方式完全不同:C#将协变和逆变限制在泛型接口上,java将其允许到任何泛型类或方法上

  • 关于语法的具体区别是什么
  • 哪种代码在一种语言中是可能的,而在另一种语言中是不可能的
  • 由于在各自的框架中缺乏集成(即缺少默认集合的实现),实际限制是什么

提前谢谢你

现在这确实是一个令人尖叫的家庭作业…@PAH不同意,这个问题很有趣;右边没有相关的问题真正回答了。。。如果我是一名计算机科学教授,我真的会问我的学生这个问题…:-)Java甚至没有声明站点差异,所以可以说它比C#更严格地限制了它。使用站点类型边界与方差完全不同,它们只是满足了一些相同的需求。谢谢您的精确性。是否有声明站点差异和使用站点类型界限的总括术语?这样我就可以修正问题中的术语。。。无论如何,问题是一个相当实际的问题,重点是如何使用以及为什么要避免对
C
java
开发人员同时使用这两种功能。。。