现在我有一个相对简单的类设置:
class A{
//stuff
}
class B:A{
//more stuff
}
public List<A> ListOfObjects;
Run Code Online (Sandbox Code Playgroud)
如果我这样做会发生什么
foreach(B i in ListOfObjects)
Run Code Online (Sandbox Code Playgroud)
我只能得到B型物品吗?它会应用一些OO魔法并将所有As转换为Bs吗?这甚至会起作用吗?
Mar*_*ell 24
如果列表中有A(或其他不是B或子类的B),那么它只会破坏无效的转换.你可能想要:
foreach(B i in ListOfObjects.OfType<B>()) {...}
Run Code Online (Sandbox Code Playgroud)
在.NET 3.5中.(我假设列表本身是非空的,顺便说一句)