(72)C# 特性

 一、C#自带特性

1.AttributeUsage特性(自定义特性的特性)

[AttributeUsage(validon,AllowMultiple=allowmultiple,Inherited=inherited)]

(1)validon表示 特性可以提供给什么类型

All  可以对任何应用程序元素应用属性
Assembly  可以对程序集应用属性
Class  可以对类应用属性
Constructor  可以对构造函数应用属性
Delegate   可以对委托应用属性
Enum  可以对枚举应用属性
Event  可以对事件应用属性
Field  可以对字段应用属性
GenericParameter  可以对泛型参数应用属性 目前,此属性仅可应用于 C#、Microsoft 中间语言 (MSIL) 和已发出的代码中
Interface  可以对接口应用属性
Method  可以对方法应用属性
Module  可以对模块应用属性 Module 引用的是可移植可执行文件(.dll 或 .exe),而不是 Visual Basic 标准模块
Parameter   可以对参数应用属性
Property  可以对属性 (Property) 应用属性 (Attribute)
ReturnValue  可以对返回值应用属性
Struct  可以对结构应用属性,即值类型

//表示该属性可以给类和方法用
AttributeTargets.Class| AttributeTargets.Method

(2)AllowMultiple 可选

AllowMultiple = true 表示可以和其他特性叠加

(3)Inherited 可选

AllowMultiple = true 是否可以被继承

2.Conditional特性

调用的方式是否在debug或者release下执行

class Program
    {
        static void Main(string[] args)
        {
            Program program = new Program();
            program.fuc();
        }
        //只有release下才执行
        //[Conditional("RELEASE")]
        //只有debug下才执行
        [Conditional("DEBUG")]
        void fuc()
        {
            Console.Write("OK");
        }
    }

3.Obsolete

标记方法过时

 还可以添加第二个参数,参数2是bool值

参数2为true时,编译时直接报错,不允许编译,直接报错

 

二、Attribute类

原文地址:https://www.cnblogs.com/buchizaodian/p/12775138.html