关于测试代码

有些时候,我们为了测试或者跟踪某些信息需要编写一些测试代码,而这些代码在正式发行的时候却是多余的。那么我们可以采取以下的方法。

1.

#if DEBUG
#endif


2.

[Conditional("DEBUG")]

注意:"DEBUG" 区分大小写。ConditionalAttribute 需要添加 using System.Diagnostics;

为了检验效果,我们看下面的例子。
  public class Class1
  {
    [Conditional("DEBUG")]
    public static void Test()
    {
      Console.WriteLine("Hello, World!");
    }

    public static void Main(string[] args)
    {
      #if DEBUG
      Console.WriteLine("Hello, World!");
      #endif

      Test();
 
      Console.WriteLine("Press Enter key to exit...");
      Console.ReadLine();
    }
  }

我们分别使用Debug和Release模式编译,然后使用Reflector看看结果。

Debug
----------------
public static void Main(string[] args)
{
 Console.WriteLine("Hello, World!");
 Class1.Test();
 Console.WriteLine("Press Enter key to exit...");
 Console.ReadLine();
}


Release
----------------
public static void Main(string[] args)
{
 Console.WriteLine("Press Enter key to exit...");
 Console.ReadLine();
}


即便使用ConditionalAttribute,Release模式编译的目标程序集中依然会有Test方法,只是调用代码被编译器忽略。  
上一篇:“多态”一个需要注意的问题


下一篇:ThreadStatic