C#中的方括号是什么意思??希望能详细讲一下,谢啦!!public class UserControl1: System.Windows.Forms.UserControl { [Category("Appearance")] public ColorMyBackColor{  get {returnthis.BackColor;}  set {this.BackColor=value;}         }}  

解决方案 »

  1.   

    http://msdn.microsoft.com/en-us/library/aa287992(v=vs.71).aspx
      

  2.   

    这个准确的说应该成为特性。我们一般用它来描述某个类,或某个属性或方法具备某种特点。
    好像我现在做的一个项目,需要将C#中的一个结构体封装为一个长整形然后传递给一个api函数。但是这个长整形的每一位都是有特殊意义的,和结构体中每一个成员对应,比如姓名就对应1,性别对应10,年龄对应100,那么我应该怎么将结构成员和这些二进制数联系在一起呢,总不能在程序中写上n个if-else吧。怎么办呢,用特性好了。
    在这里,我会定义一个特性类,这个类型就一个int属性,属性名:IntValue,我会用它修饰我结构体中的每一个成员public class MyValueAttribute: Attribute
    {
        Int32 IntValue{get; set;}
        public MyValueAttribute(Int32 val){
            this.IntValue = val;
        }
    }接下来用这个特性类修饰结构体中的成员public struct Student
    {
        public String SName{get; set;}
        public String SAge{get; set;}
        ....
    }接下来就是如何修饰了,使用特性类的方式很简单,就是在目标(类,方法,属性或字段)上加上中括号,里面可以写上你的特性类的构造函数[code=C#]public struct Student
    {
        [MyValueAttribute(1)]
        public String SName{get; set;}    [MyValueAttribute(2)]
        public String SAge{get; set;}
        ....
    }[/code]
    ,现在我使用了特性类,但是,当我构造好了一个结构,那我们该如何获取每个成员上的特性值,并把它累加为api需要的长整形呢,下面是关键点:public struct Student
    {
        [MyValueAttribute(1)]
        public String SName{get; set;}    [MyValueAttribute(2)]
        public String SAge{get; set;}
        ....    public Int32 Value
        {
            get//只读属性
            {
               Int32 sum = 0;
               Type type = typeof(Student);
               FieldInfo[] fields = type.GetFields();
               foreach(FieldInfo fi in fields)
               {
                   //获取在成员上一个特性类对象
                   MyValueAttribute ma = (MyValueAttribute)fi.GetCustomizeAttribute(this
                       , typeof(MyValueAttribute));
                   sum += ma.IntValue;
               }
               return sum;
            }
        }
    }
    最后说一句,特性其实就是用一个特性类对象去修饰某个目标对象,有了特性类会使得我们的程序变得更加的灵活。另外特性类还有它的修饰范围,是否可以继承等等,这些还需要楼主多多了解。反正,我like it,呵呵
      

  3.   

    确切的说着是特性,是.net引入一个可以在运行时动态影响程序执行的一个类型,你可以通过继承系统的Attribute类型来自定你自己的特性。这个特性的用途一般是在运行时通过反射拿到特性的信息的,这跟JAVA里的注解相对应。