基礎才(cai)是重中(zhong)之重——派生類集(ji)合(he)與(yu)基類集(ji)合(he)可以相互轉(zhuan)換嗎?
派(pai)生類(lei)可以直(zhi)接強轉為(wei)類(lei)基類(lei)型,而反之則不可以,它們的集合(he)也具有(you)這種(zhong)特性
以(yi)下(xia)實(shi)例是(shi)parent是(shi)基類,sub是(shi)它的(de)派生類,如果有一個sub類型(xing)的(de)集合(he)希望轉換(huan)為parent,那是(shi)可以(yi)的(de),它可以(yi)廣泛的(de)應用于(yu)面向接(jie)口和面向抽象的(de)編程
環境中。
1 class parent 2 { 3 public string name { get; set; } 4 } 5 class sub : parent { } 6 7 #region 由派生類集合強轉成父類集合(正確) 8 List<sub> sublist = new List<sub> { new sub { name = "zzl" }, new sub { name = "zhz" } }; 9 sublist.Cast<parent>().ToList().ForEach(i => Console.WriteLine(i.name)); 10 #endregion 11 12 #region 由父類集合強轉成派生類集合(出錯) 13 List<parent> parentlist = new List<parent> { new sub { name = "zzl" }, new parent { name = "zhz" } }; 14 parentlist.Cast<sub>().ToList().ForEach(i => Console.WriteLine(i.name)); 15 #endregion