我有一个包含3个项目的列表框,其中一次只能选择1个项目。这些项目的属性可以从不同的类 - Alto,Zen,Esteem访问。我一次只需要使用1个班级。 我将这些类存储在列表数组中。我如何处理我想要的课程(根据我的逻辑)?
类数组列表
List<object> lst = new List<object>();
将每个类对象添加到列表
Alto objAlto = new Alto();
Zen objZen = new Zen();
Esteem objEsteem = new Esteem();
lst.Add(objAlto);
lst.Add(objZen);
lst.Add(objEsteem);
我的处理逻辑
现在我的问题是,我该如何处理这些物品?为什么我无法得到&#34;。置身&#34;?我是否错过任何隐式转换以利用此功能?
答案 0 :(得分:1)
要添加到D Stanleys的答案,那么:
foreach(var o in lst.OfType<IDisposable>())
{
o.Dispose();
}
答案 1 :(得分:0)
为什么我无法获得“.Dispose”?
Becasue yout list是tyoe List,Dispose
是IDisposable
接口的方法。如果您的列表属于IDisposable
类型(或某种类型实现IDisposable
),那么您可以直接致电Dispose
。
我是否错过任何隐式转换以利用此功能?
没有隐式转换,但如果对象实现IDisposable
,您可以显式转换它们:
foreach(object o in lst)
{
if(o is IDisposable)
((IDisposable)o).Dispose();
}
然而,我看到了一些设计奇怪的事情:
Object
之外),那么最好使用更具体类型的列表。IDisposable
的任何内容。