• C# 中利用 Conditional 定义条件方法


    利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。

    条件方法要受到以下限制:

    • 条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定 Conditional 属性,将出现编译时错误。
    • 条件方法必须具有 void 返回类型。
    • 不能用 override 修饰符标记条件方法。但是,可以用 virtual 修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用 Conditional 属性显式标记。
    • 条件方法不能是接口方法的实现。否则将发生编译时错误。
    • 如果条件方法用在“委托创建表达式”中,也会发生编译时错误

      Ps.尽量使用Conditional属性代替#if和#endif

      #define hello //这里就是定义了一个编译符号,当下面Conditional会检测是否存在这个hello编译符号时会
      
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Reflection;
      using System.Diagnostics;
      
      
      namespace reflection
      {
          public class Trace
          {
      
              [Conditional("hello")] //定义了Conditional
              public static void ShowMessage(string msg)
              {
                  Console.WriteLine(" [Trace - " + msg);
              }
          }
      
          class Program
          {
              static void Main(string[] args)
              {
                  Trace.ShowMessage("Starting");
                  Console.WriteLine("运行中");
                  Trace.ShowMessage("Ending");
                  Console.ReadKey();
              }        
          }
      }

    • 当不存在#define hello时 运行结果就只会有   “运行中”
  • 相关阅读:
    小朋友学数据结构(2):栈
    小朋友学数据结构(1):约瑟夫环的链表解法、数组解法和数学公式解法
    小朋友学C++(2)
    小朋友学C++(1)
    小朋友学C语言(8)
    小朋友学C语言(7)
    小朋友学C语言(6)
    小朋友学C语言(5):常量和变量,for循环
    小朋友学C语言(4):单精度浮点数与双精度浮点数
    小朋友学C语言(3):整数、浮点数、字符
  • 原文地址:https://www.cnblogs.com/daban/p/2778865.html
Copyright © 2020-2023  润新知