C#generic&可疑类型检查

时间:2016-03-31 15:34:37

标签: c# generics types casting

我无法理解为什么以下代码中的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;')类型

0 个答案:

没有答案