C#类==>属性

来源:互联网 发布:mac 思维导图 知乎 编辑:程序博客网 时间:2024/05/21 17:47

1,属性是C#从VB提取的,而不是C++或者JAVA。

 

2,在语法上更像是调用了一个字段,但实际上是调用了属性访问器。包括 get访问器和set访问器

 

3,set访问器不指定参数,但编译器会假定一个参数value.

 

4,VB6程序员注意:C#不区分Set和Let,总是用set.

 

5,属性的只读与只写

     在属性中省略set访问器,就可以创建只读属性

     在属性中省略get访问器,就可以创建只写属性

     ※这并不是一个好的编程方式,这样会使客户机代码的作者迷惑,如果要这么做,最好是用一个方法代替。

 

6,属性的访问修饰符

     C#允许给属性的get和set访问器设置不同的修饰符(private,protected等) 但不能同时为两个设置,必须有一个具备属性的访问级别,否则就会产生一个编译错误。

     如下:

 


 

        private string name;

       错误

        public string Name   
        {
            private
            get
            {
                return name;
            }
            private
            set
            {
           
                name = value;
            }
        }

 

        正确

        public string Name
        {
            private
            get
            {
                return _name;
            }
            set
            {
          
                _name = value;
            }
        }

 

 


 

 

7,属性定义的自动实现

     用自动实现的的属性,不需要声明关联的变量

     例如,6中定义的private string name; name变量,编译器会自动创建它。

     public string Name { get; set; }

 

      注意

      a,不能尝试设置只读属性 

      public string Name { get;  }会出错,

     

      b,可以使用访问修饰符,规则同上

       public string Name { private get; set; }