只是好奇:当然,我们都知道泛型类型推断的一般情况是不确定的。所以 C# 根本不会做任何类型的子类型:如果Foo<T>是通用的,Foo<int>不是Foo<T>或Foo<Object>或其他任何你可能的子类型做饭。当然,我们都用丑陋的接口或抽象类定义来解决这个问题。
但是...如果您无法解决一般问题,为什么不将解决方案限制在简单的情况下。例如,在我上面的列表中,很明显Foo<int>是Foo<T>的子类型,检查起来很简单。与检查Foo<Object>相同。
如果他们只是说,哎呀,我们会尽力而为,是否还有其他深渊会从深渊中蔓延开来?或者这只是微软语言人员的某种宗教纯洁性?
更新:
这是一个非常古老的线程。这些天来,C# 有 var,它解决了我抱怨的一半,然后使用匿名委托的 Linq 风格,有一个很好的符号,不需要输入两次相同的东西。因此,我反对的每个方面都通过最近对 C# 的更改得到了解决(或者也许我只是花了一段时间才了解发布线程时刚刚介绍的东西......)我使用这些新的现在在 Isis2 系统中具有可靠的云计算 (isis2.codeplex.com) 的功能,我认为该库因此具有非常干净的外观和感觉。检查出来,让我知道你的想法)。——肯·伯曼(2014 年 7 月)