#define Buged
//C# 的宏定义必须出现在所有代码之前。当前只让 Buged 宏有效。
using System;
using System.Diagnostics; // 注意:这是为了使用包含在此名称空间中的ConditionalAttribute特性
namespace Con_Attribute
{
class Program
{
static void Main(string[] args)
{
// 虽然方法都被调用了,但只有符合条件的才会被执行!
ToolKit.FunA();
ToolKit.FunB();
ToolKit.FunC();
ToolKit.FunD();
}
}
class ToolKit
{
[ConditionalAttribute("Li")] // Attribute名称的长记法
[ConditionalAttribute("Buged")]
public static void FunA()
{
Console.WriteLine("Created By Li, Buged.");
}
[Conditional("Li")] // Attribute名称的短记法
[Conditional("NoBug")]
public static void FunB()
{
Console.WriteLine("Created By Li, NoBug.");
}
[ConditionalAttribute("Zhang")]// Attribute名称的长记法
[ConditionalAttribute("Buged")]
public static void FunC()
{
Console.WriteLine("Created By Zhang, Buged.");
}
[Conditional("Zhang")] // Attribute名称的短记法
[Conditional("NoBug")]
public static void FunD()
{
Console.WriteLine("Created By Zhang, NoBug.");
}
}
}
看了一篇博客园朋友的博文,这里的运行结果为:
Created By Li,Buged.
Created By Zhang,Buged.
官网解释为:表示自定义属性的基类 作为菜鸟的我,表示完全看不懂这个意思。
首先,例如这一块
[ConditionalAttribute("Buged")]
public static void FunA()
FunA有个Buged这个特性,这个特性是干嘛的?说是干嘛的获取还是不太对,我的理解是当FunA里有了这个特性后,我该怎么去使用它?需要不需要去调用?如果不调用,那这个特性的理解是怎样理解的?说调用,那程序中应该怎么调用这个特性。
这个运行结果,也不太清楚它是咋得来的。后来查了几篇文章,都讲得比较笼统,没有给一个详细的解释,不明白之处,希望各位大神帮小弟解解惑。初学,望大家不要喷我