我无法理解为什么以下代码中的terrierPacks
无法识别为Collection<Pack<Dog>>
?
public class Dog
{
}
public class Terrier : Dog
{
}
public class Pack<T> where T: Dog
{
}
public class TerrierPack: Pack<Terrier>
{
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var terrierPacks = new ObservableCollection<TerrierPack>();
//This test is always wrong. Why ?
if (terrierPacks is Collection<Pack<Dog>>)
Console.WriteLine("True");
else
Console.WriteLine("False");
}
}
线索: Visual Studio会返回以下警告:
给定的表达式永远不会提供('System.Collections.ObjectModel.Collection&lt; WpfApplication1.Pack&lt; WpfApplication1.Dog&gt;&gt;')类型