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; }
//定义一个颜色的枚举Ecolor
public enum Ecolor
{
白,黑,黄,灰,花
}
//三种定义字段方式
//public Ecolor color;
//public Ecolor Color
//{
// get
// {
// return color;
// }
// set
// {
// color = value;
// }
//}
//同上
public Ecolor Color { get; set; }
}