c# – 高效的运行时类型检查
发布时间:2020-12-15 06:51:01 所属栏目:百科 来源:网络整理
导读:我有类的层次结构如下(实际上我有3个以上的派生类型): class A {};class B : A {};class C : B {};class D : A {}; 这些类的实例存储在List A集合.有时集合是相当大的(数千甚至数万个对象). 在我的代码中,我经常需要根据对象的确切类型执行一些操作.这样的
我有类的层次结构如下(实际上我有3个以上的派生类型):
class A {}; class B : A {}; class C : B {}; class D : A {}; 这些类的实例存储在List< A>集合.有时集合是相当大的(数千甚至数万个对象). 在我的代码中,我经常需要根据对象的确切类型执行一些操作.这样的事情 List<A> collection = ... foreach (A obj in collection) { if (obj is C) something(obj as C); else if (obj is B) somethingElse(obj as B); .... } 如你所见,代码对对象和类型的类型执行许多检查.对于具有许多元素的集合,代码的性能不是很好. 在我的情况下,你会建议加快运行时间类型检查? 解决方法
对我来说听起来像你应该将“某事”移动到A上的虚拟方法中,然后B,C和D中的每一个都可以根据需要重写它(这可能意味着调用外部方法 – 他们不需要做工作本身) – 或者不按照需要重写.
然后这就变成了 foreach (A obj in collection) { obj.DoSomething(); } 即 class A { public virtual void DoSomething() {...} } class B : A { public override void DoSomething() {...} } 等等 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |