Unity-属性类似是有返回值方法的变量

属性类似是有返回值方法的变量
属性有一个优点,当类内部发生改变时,外部可以不受到任何影响。
需求:学生的年龄不是录入而是需要根据生日年份自动计算。输入学生的年龄,判断如果学生年龄大于18岁,则判定为成人。

//类的属性
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//属性类似是有返回值方法的变量
//属性有一个优点,当类内部发生改变时,外部可以不受到任何影响。
//需求:学生的年龄不是录入而是需要根据生日年份自动计算。输入学生的年龄,判断如果学生年龄大于18岁,则判定为成人。

public class Demo : MonoBehaviour
{

    void Start()
    {
        Student student = new Student()
        {
            birthdayYear = 2000
        };

        Debug.Log("学生年龄 = " + student.age);
        student.age = 20;
        Debug.Log("学生是否成人 = " + student.isAdult);
    }
}

public class Student : MonoBehaviour
{

    public int birthdayYear;
    public bool isAdult = false;

    public int age
    {
        get
        {
            return DateTime.Now.Year - birthdayYear;
        }
        //当调用student.age = 20;赋值,会调用set里的代码
        set
        {
            //value值可以赋值给别的变量,也可以直接修改,这都是允许的。
            //value = 15;
            if (value >= 18)
            {
                isAdult = true;
            }
        }
    }
}