Condional特性:
一般用于程序开发过程中的“测试方法”的编写。测试阶段定义“测试的宏”,发布商业版本,取消宏即可。
演示用两种方法:
1.方法的Conditional特性
2.对于表达式的条件编译#if debug
其他预定义特性:
Serializable特性:
声明结构可以序列化
NonSerialized特性
声明结构不可以序列化
DllImport特性:
声明是非托管代码实现的。
托管代码:系统的、自动的
非托管代码:手动的、比如关闭一些IO、数据库连接
源代码:
/***
* 学习特性:
* 一、系统特性
* 1.Obsolete特性(即过时特性),命名空间是using System;,并不是using System.Diagnostics;
* 2.Conditional特性,针对方法
* 3.条件编译技术,针对表达式 #if debug elseif #endif
*
* 二、自定义特性(略)
*
*
*
*/
#define OnlyTest //定义一个宏,表示允许测试方法运行
#define Debug //定义一个宏,表示调试阶段
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Diagnostics;//特性专有的命名空间
namespace chapter38学习Condional特性
{
class Program
{
//测试方法只存在于测试阶段,上线发布以后,测试方法就不运行了
[Conditional("OnlyTest")]//有条件执行,默认不执行, 需要定义一个宏,参数和宏要对应起来
public void TestMethod()
{
Console.WriteLine("这是测试方法");
}
public void Method1()
{
Console.WriteLine("这是方法1");
}
public void Method2()
{
Console.WriteLine("这是方法2");
}
public void Test1()
{
TestMethod();
Method1();
Method2();
}
/// <summary>
/// 学习条件编译
/// </summary>
public void Test2()
{
Console.WriteLine("aaa");
Console.WriteLine("bbb");
#if Debug
Method1();
Console.WriteLine("ccc");
#else
Method2();
Console.WriteLine("ddd");
#endif
}
static void Main(string[] args)
{
Program obj = new Program();
// obj.Test1();
obj.Test2();
}
}
}