哪种表现最好?

时间:2010-02-24 13:56:20

标签: c# .net performance

以下哪些代码段的执行速度最快?

if(ClassTestBase is ClassTestChild1)

if(ClassTestBase.Type == EClassType.Child1)

更新

以下是完整的方案:

public enum EInheritanceTree
{
    BaseClass,
    Child1,
    Child2,
    Child3
}

public class MyBaseClass
{
    public virtual EInheritanceTree MyClassType
    {
         get
         {
              return EInheritanceTree.BaseClass;
         }
    }
}

public vlasse MyChildClass1 : MyBaseClass
{
    public override EInheritanceTree MyClassType
    {
        get
        {
            return EInheritanceTree.Child1;
        }
    }
}

考虑一种必须比较类类型以查看它是什么类型的方法。哪个最好?

public bool IsChild1(MyBaseClass myClass)
{
     if(myClass is MyChildClass1)
          return true;

     return false;
}

public bool IsChild1(MyBaseClass myClass)
{
     if(myClass.MyClassType == EInheritanceTree.Child1)
          return true;

     return false;
}

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用分析器来测试哪个性能更高? Visual Studio附带一个分析器。

我会更关心是否需要一个包含有关应用程序的继承信息的枚举。

答案 1 :(得分:0)

如果您担心性能,请不要将所有这些包含在功能中。任何代码都说:

if (Obj.IsChild1() ) foo;

应该这样做:

if(myClass.MyClassType == EInheritanceTree.Child1) foo;

如果您担心性能问题,那么您可能需要重新审视隐藏功能背后的所有概念。另外,为什么不使用多态 - 这是使子类行为不同的“正确”方法。

无论如何,做一些你自己的时间。这是确定更快的唯一方法。