次のコードでコンパイル エラーが発生するのはなぜですか (コメント行を参照)。
public void Test()
{
HashSet<HashSet<Animal>> setWithSets = new HashSet<HashSet<Animal>>();
HashSet<Cat> cats = new HashSet<Cat>();
setWithSets.Add(cats); // Compile error
}
private class Animal { }
private class Cat : Animal { }
VS2012 で 2 つのエラーが表示されます。最初のエラーは重要です。
- エラー 2 引数 1: 'System.Collections.Generic.HashSet<Expenses.Tests.TestDb.SetTest.Cat>' から 'System.Collections.Generic.HashSet<Expenses.Tests.TestDb.SetTest.Animal>' に変換できません
- エラー 1 'System.Collections.Generic.HashSet<System.Collections.Generic.HashSet<Expenses.Tests.TestDb.SetTest.Animal>>.Add(System.Collections.Generic.HashSet)' に最適なオーバーロードされたメソッドの一致にはいくつかの無効な引数
私の質問は、「setWithSets」に「猫」を追加できないのはなぜですか?