C#修饰符、字段、属性

一、C#有5种修饰符

    C#修饰符、字段、属性_第1张图片

  注意:类只能用public, Internal来修饰,默认值:public

   成员能用以上5种来修饰,默认值:Private


二、字段(filed)

        可以在声明字段的同时赋给它一个初始值。

       如: public  int month=7;

              public  double salary=3500;


三、属性(property)

          就如上面的工资,一般是保密的,那么就必须使用私有的字段,这样就不能直接来访问。我们可以使用方法来达到目的,但如果对每一个字段都去编写一个方法来进行读       写操作似乎又麻烦了些。那么就用属性以灵活的方式实现了对私有字段的访问,它是一种“访问器”方法,包括get方法和set方法,更明确地说,属性就是    方法的精简写法的实现,隐藏了实现和验证的代码。它有两个访问器:

   get访问器用于获取属性的值。

   set访问器用于设定属性的值。既然它是方法,且是要在方法内对私有字段用新值进行更改替换,那么它就是可以(或者说是应该)接收参数的,   value 关键字就是用于定义由 set 取值函数分配的值。  

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

3.1 属性按可以访问的类型分为三种不同的类型:  

      (一)读/写属性

    读/写属性是一个具有get()和set()访问器的属性

          语法:  [访问修饰符]  数据类型  属性  {get{ };   set{ };  }

     (二)只读属性

              仅具有get()访问器属性称为只读属性.

             语法: [访问修饰符] 数据类型 属性名 {get{ };   }

     (三)只写属性

               仅具有set()访问器属性称为只写属性,不推荐使用只写属性.

               语法: [访问修饰符] 数据类型 属性名 {set{ };   }

  (1)属性可以保证安全,当不在本类中使用时可以保证使用属性名可以避免用字段的名字。

 (2)属性的set和get函数可以限制字段的一些功能,以达到某种目的。

 (3)属性没有存储数据的功能,数据都存在字段中,所以只有修改字段的数据才能更改数据,修改属性的值没用。

 class Emp
    {
        //ctrl+R+E 
        //右键|重构|封装字段
        private string name;  //字段

        public string Name   //属性
        {
            get { return name; }
            set { name = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set {

                //判断1-100  (value 就是参数(固定))
                if (value >= 1 && value <= 100)
                {
                   // this.age = age;    //this 当前对象; 区分成员变量与形式参数的名字相同
                    age = value;
                }
                else
                {
                    Console.WriteLine("年龄不符!");
                }
            
            }
        }
}


四、总结

          属性是封装了对类内部私有字段成员的访问,它提供了一种书写更简便、访问控制更安全实现方式。

         我们应该尽量避免在属性的访问器内进行过多的逻辑运算,如果确实有复杂的逻辑运行,请使用方法。

         尽可能编写出运行效率更高,更健壮,更容易维护的C#代码。尽可能的使用属性(property),而不是数据成员(field

你可能感兴趣的:(C#修饰符、字段、属性)