一、Obsolete.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Person
{
[Obsolete ("此方法已经过时, 请用NewMethod替代")]
public void OldMethod1 ()
{
Console.WriteLine("OldMethod1");
}
[Obsolete("此方法已经过时, 请用NewMethod替代", true)]
public void OldMethod2 ()
{
Console.WriteLine("OldMethod1");
}
public void NewMethod()
{
Console.WriteLine("NewMethod");
}
}
}
Obsolete可以接受两个参数,第一个为调用方可以看到的提示信息,第二个参数是调用此方法时,是否编译报错.
二、Conditional.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Person
{
[Conditional ("debug")]
public void TestMethod ()
{
Console.WriteLine("TestMethod");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.TestMethod();
}
}
}
当一个方法添Conditional特性时,调用方必须预先定义对应的宏,否则调用无效.
#define debug
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.TestMethod();
}
}
}
C#中使用#define定义宏,注意,定义代码要放到脚本文件第一行,否则报错.