我試圖返回實現IHerd的所有動物對象。返回實現接口的所有通用列表對象
有人能指點我嗎?
public interface IHerd {
void Herd();
}
public class Dog : Animals, IHerd {
public void Herd() {
// Swim method
}
}
public class Animals {
public void Eat() { }
public void Poop() { }
}
public class Farm {
public List<Animals> FarmAnimals = new List<Animals>();
public Animals GetHerders() {
return FarmAnimals.OfType<IHerd>();
}
}
你不需要`Cast`。 – Gabe 2011-01-12 19:46:21
是的,因爲「IHerd」和「Animals」僅在它們有時在同一個類中實現時相關,因此不能隱含地將「List」作爲「List 」,因爲IHerd可以實現不從動物派生的類。如果不是IHerd,實現了派生類HerdAnimal,如果您使用的Framework v4.0使List協變,您可以避免強制轉換。 –
KeithS
2011-01-12 20:10:17