我们通常把字段定义为私有的,属性定义为公共的,通过属性访问字段。定义一个属性时,类型必须和它所访问的字段一致。
例如:姓名_name为string类型,那么它对应的属性Name也一定是string类型。
注意:属性不是必须和字段相关联的,但是没有字段单独定义属性没有任何意义。属性定义时属性名后边没有小括号,set{}和get{}访问器也都是大括号,不是小括号。
属性本质上是方法,只是与方法不同。可以实例化对象后给属性赋值,也可以取值,只调用属性即可。不需要访问其中的访问器。
using System; class User { //设为私有的 private string name; private string sex; //设置属性Name public string Name { //在属性Name里面声明了2个方法一个是get一个是set //这2个方法没有任何的修饰符,而这2个方法实现的功能跟SetName和GetName完全一样 get { return name; } set { //大家注意这个value,它是一个隐含的参数 //也就是说IL代码会自动帮你生成一个value这么一个参数,我们可以直接调用它 //value就先当于SetName里面的values参数 //value的类型是跟私有字段name的类型是一致的 name = value; } } //设置一个属性Sex public string Sex { get { return sex; } set { if (value == "男" || value == "女") { sex = value; } else { Console.WriteLine("性别只能为“男”或“女”"); } } } } class Property { static void Main() { User zs = new User(); //调用属性 zs.Name = "李四"; zs.Sex = "牛"; Console.WriteLine("姓名:" + zs.Name + " 性别:" + zs.Sex); } }