有些时候,我们为了测试或者跟踪某些信息需要编写一些测试代码,而这些代码在正式发行的时候却是多余的。那么我们可以采取以下的方法。
1.
#if DEBUG
#endif
2.
[Conditional("DEBUG")]
注意:"DEBUG" 区分大小写。ConditionalAttribute 需要添加 using System.Diagnostics;
为了检验效果,我们看下面的例子。
我们分别使用Debug和Release模式编译,然后使用Reflector看看结果。
Debug
----------------
Release
----------------
即便使用ConditionalAttribute,Release模式编译的目标程序集中依然会有Test方法,只是调用代码被编译器忽略。
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();
}
}
{
[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();
}
{
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();
}
{
Console.WriteLine("Press Enter key to exit...");
Console.ReadLine();
}
即便使用ConditionalAttribute,Release模式编译的目标程序集中依然会有Test方法,只是调用代码被编译器忽略。