C# 高级特性(一):特性

                

Net 框架提供了三种预定义特性:

  • Conditional
  • Obsolete
  • AttributeUsage

 1  Conditional(条件编译特性

        // 类似条件编译。但没有定义符号 时,引用处编译器不会报错
        [Conditional("DEBUG")]
        public static void Message(string msg)
        {
            Console.WriteLine(msg);
        }

2 Obsolete(标记错误特性

        // 标记的方法会在 引用处被编译器视为错误或 警告  
        [Obsolete("过时的 方法", true/*true:错误,false:警告*/)]
        public static void ShowMessage(string msg)
        {
            Console.WriteLine(msg);
        }

3   AttributeUsage(自定义特性

// 使用时先定义 自己的特性类,例如:DeBugInfo

 // 设置特性类 的属性

[AttributeUsage(AttributeTargets.Class |

        AttributeTargets.Constructor |

        AttributeTargets.Field |

        AttributeTargets.Method |

        AttributeTargets.Property,/*作用域,用于程序集 或变量*/

        AllowMultiple = true,/*参数 allowmultiple(可选的)为该特性的 AllowMultiple 属性(property)提供一个布尔值。如果为 true,则该特性是多用的。默认值是 false(单用的)。*/

         Inherited = true   /*参数 inherited(可选的)为该特性的 Inherited 属性(property)提供一个布尔值。如果为 true,则该特性可被派生类继承。默认值是 false(不被继承)。*/

)]

    public class DeBugInfo : System.Attribute

    {

        private int bugNo;

        private string developer;

        private string lastReview;

        public string message;


        public DeBugInfo(int bg, string dev, string d)

        {

            this.bugNo = bg;

            this.developer = dev;

            this.lastReview = d;

        }


        public int BugNo

        {

            get

            {

                return bugNo;

            }

        }

        public string Developer

        {

            get

            {

                return developer;

            }

        }

        public string LastReview

        {

            get

            {

                return lastReview;

            }

        }

        public string Message

        {

            get

            {

                return message;

            }

            set

            {

                message = value;

            }

        }

}


//自定义 特性,可记录 信息,可以使用反射读取 。

        
  [DeBugInfo(55, "Zara Ali", "19/10/2012",
  Message = "Return type mismatch")]      

  public void Display()

        {

            Console.WriteLine("Length: {0}", length);

            Console.WriteLine("Width: {0}", width);

            Console.WriteLine("Area: {0}", GetArea());

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值