C# 属性
1.定义属性需要名字和返回值
2.属性分为两块 get块(获取)set块(设置)
3.访问属性和访问字段是一样的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _属性
{internal class Student{public string name;public int age;private int id;//定义属性// 使用属性也可以 访问和设置带有权限的数据字段public int Id{// 访问get { return id; }set{// = 值 就是有value来代替的id = value;}}public string Name{get{return name;}set{name = value;}}//只读//public int Age//{// get// {// return age;// }//}//只写//public int Age//{// set// {// age = value;// }//}//private string addres;//public string Addres { get => addres; set => addres = value; }//以上方式写法比较复杂 c#提供了一种语法糖 可以简化写法public string Addres { get; set; }//"12345678910" 就是Phone的默认值public string Phone { get; set; } = "12345678910";}
}
static void Main(string[] args)
{
Student stu = new Student();
stu.name = "李四";
//stu.id = 123465; // 正常访问私有数据是没有权限的
//使用属性
//通过属性设置或访问数据 使用的时候把它当做一个普通的数据成员一样使用 并不是函数调用
//设置 = 值 调用set
stu.Id = 123456;
// 访问 直接对象名.属性名
Console.WriteLine(stu.Id);stu.Name = "王五";
Console.WriteLine(stu.Name);//stu.Age = 20; //因为是只读的 没有办法设置
//Console.WriteLine(stu.Age);stu.Addres = "河南省";
Console.WriteLine(stu.Addres);
Console.WriteLine(stu.Phone);
}
使用枚举控制字段的取值范围
static void Main(string[] args)
{Dog dog = new Dog("阿黄");//dog.Name = "阿黄";Console.WriteLine(dog.Name);dog.Color = Dog.Ecolor.黑;Console.WriteLine(dog.Color);dog.Color = Dog.Ecolor.黄;
}
class Dog{public string Name { get; set; }private int age;public Dog(string Name){this.Name = Name;}public int Age { get => age; set => age = value; }//定义一个颜色的枚举Ecolorpublic enum Ecolor{白,黑,黄,灰,花}//三种定义字段方式//public Ecolor color;//public Ecolor Color//{// get// {// return color;// }// set// {// color = value;// }//}//同上 public Ecolor Color { get; set; }}