发展历程 c中的条件属性是什么? -技术百科的定义

c中的条件属性是什么? -技术百科的定义

目录:

Anonim

定义-条件属性是什么意思?

条件属性是一个标记,用于标记方法或类的执行,该方法或类的执行取决于预处理标识符的定义。


条件属性表示指定条件编译的条件,其中根据符号的定义有选择地调用方法。 它根据条件-是否定义了特定的条件编译符号,指示编译器编译(转换为Microsoft中间语言)或不编译特定的代码块。 如果尚未在调用特定符号时立即对其进行定义,则编译器将忽略对该方法或类的调用。

技术百科解释了条件属性

条件属性具有以下特征:

  • 它可以应用于方法和类,但前提是它们是从属性派生的。
  • 在将条件属性应用于类时,仅在定义了条件编译符号的情况下,属性类才会向元数据发出。
  • 它采用一个参数,它是控制编译的标识符符号。
  • 传递给条件方法或属性类的参数将由编译器进行类型检查。
  • 它完全由编译器处理,而不是由运行时处理。
  • 它不能应用于委托创建表达式中使用的方法。
  • 它不会影响为条件方法生成的代码,但会影响对该方法的调用。

条件属性提供了声明式编程模式,并有助于轻松维护源代码。 通过在方法级别应用条件属性,源代码更具可读性。 方法的调用者无需使用其他代码即可进行条件编译。 通过使用标识符DEBUG显示和记录与应用程序相关的诊断信息,可以使用条件属性来启用调试版本中的跟踪和日志记录功能。 而且,它有助于将与调试版本(用于开发的系统中)有关的逻辑与发布版本(在站点和应用程序中部署)分开。 为了在不重复代码的情况下维护软件的多个版本(在某些版本中具有选定的功能),条件编译形成了正确的技术,基于该技术,可以基于为多个版本定义的相应符号来维护多个版本的单个主要源代码。


以下是使用条件属性时要遵循的一些规则:

  • 类或结构声明中的条件方法必须具有一个返回类型为void。
  • 当使用多个标识符作为条件属性时,方法的包含是基于所定义符号的逻辑或或逻辑与的结果。
  • 不能在接口声明的方法上指定它。
  • 条件方法不能以“ override”关键字开头,但可以是虚拟的。 如果被覆盖,则将其视为隐式有条件的。
  • 在源代码中,可以将考虑用于条件编译的符号定义为编译器命令行选项或OS外壳程序中的环境变量,或定义为编译指示(使用预处理程序指令“ #define”)。
  • 与C ++不同,C#中的符号定义可以任意顺序,因此必须正确设置“ #define”和条件方法之间的顺序。

尽管“ #if和#endif”的使用构成了条件属性的替代选项,但与前者相比,后者提供了一种更干净,优雅且不易出错的方法。 在内部,区别在于在为方法使用条件属性时,方法仍将是程序集的一部分并且不会被加载。 但是在#if / #endif的情况下,方法在程序集本身中将不可见。

该定义是在C#上下文中编写的
c中的条件属性是什么? -技术百科的定义