c# – 高效的运行时类型检查

前端之家收集整理的这篇文章主要介绍了c# – 高效的运行时类型检查前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有类的层次结构如下(实际上我有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() {...}
}

等等

猜你在找的C#相关文章