#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里有了这个特性后,我该怎么去使用它?需要不需要去调用?如果不调用,那这个特性的理解是怎样理解的?说调用,那程序中应该怎么调用这个特性。
这个运行结果,也不太清楚它是咋得来的。后来查了几篇文章,都讲得比较笼统,没有给一个详细的解释,不明白之处,希望各位大神帮小弟解解惑。初学,望大家不要喷我