1. 程式人生 > 實用技巧 >6.類的定義和學員的使用

6.類的定義和學員的使用

///


/// 學員類
///

public class Student
{
#region 欄位

    //欄位,又稱為"成員變數",一般在類的內部做資料互動使用,一般使用Private修飾。
    //欄位命名規範:一般採用Caml命名法,即首字母小寫。
    //欄位的通俗理解:欄位好比我們的個人財產,只供我們自己使用,所以用Private修飾。

    /// <summary>
    /// 欄位:學號
    /// </summary>
    private int studentId;
    /// <summary>
    /// 欄位:學生姓名
    /// </summary>
    private string studentNmae = string.Empty;
    /// <summary>
    /// 欄位:年齡
    /// </summary>
    private int age;
    /// <summary>
    /// 欄位:出生日期
    /// </summary>
    private DateTime birthday;
    /// <summary>
    /// 欄位:常數字段
    /// </summary>
    private const double pai = 3.14;

    #endregion

    #region 屬性
    //屬性其實是外界訪問私有欄位的入口,屬性本身不儲存任何資料。
    //屬性一般採用Pascal命名法,即首字母大寫。資料型別要和欄位一致。使用public修飾。
    //給屬性賦值,其實是屬性指向的私有欄位賦值。
    //讀屬性值,其實是獲取屬性指的私有欄位或者其他值。
    
    /// <summary>
    /// 屬性:學號
    /// </summary>
    public int StudentId
    {
        get { return studentId; }
        set { studentId = value; }
    }
    /// <summary>
    /// 屬性:姓名
    /// </summary>
    public string StudentNmae 
    { 
        get { return studentNmae; } 
        set { studentNmae = value; }
    }
    /// <summary>
    /// 屬性:姓名
    /// </summary>
    public DateTime Birthday
    {
        get { return birthday; }
        set { birthday = value; }
    }
    /// <summary>
    /// 屬性:年齡
    /// </summary>
    public int Age
    {
        ////方法1
        //get
        //{ 
        ////可以新增自己需要的任務邏輯
        //    return age;
        //}
        //set
        //{
        //    if (value<18||value>50)
        //    {
        //        value = 18;
        //    }
        //    age = value;
        //}

        //方法2.沒有私有欄位的屬性
        get
        {
            return DateTime.Now.Year - birthday.Year;
        }

    }
    /// <summary>
    /// 屬性:只讀屬性
    /// </summary>
    public double PAI
    {
        get { return pai; }
    }
    #endregion

    #region 方法
    public string GetStudent()
    {
        string info = string.Format("我的姓名是:{0},年齡是:{1}", StudentNmae, Age);
        return info;
    }
    #endregion
}


class Program
{
    static void Main(string[] args)
    {
        #region 使用類的方法
        //[1]正常的方式呼叫方法
        //建立物件,給物件分配空間
        Student objstu1 = new Student();
        //給物件屬性賦值
        objstu1.StudentNmae = "張三";
        objstu1.Birthday = Convert.ToDateTime("1989-2-8"); ;
        //呼叫方法
        string info=objstu1.GetStudent();
        Console.WriteLine(info);


        //[2]用陣列的方式呼叫方法
        List<Student> liststu = new List<Student>();
        Student objstu2 = new Student();
        Student[] objstu3 = new Student[4];
        objstu2.StudentNmae = "李四";
        objstu2.Birthday =Convert.ToDateTime("1987-4-9");
        objstu3[0] = new Student();
        objstu3[0].StudentId = 1001;
        objstu3[0].StudentNmae = "王五";
        liststu.Add(objstu1);
        liststu.Add(objstu2);
        liststu.Add(objstu3[0]);
        //遍歷泛型集合
        foreach (Student item in liststu)
        {
            Console.WriteLine(item.StudentNmae + ";;;;" + item.StudentId + ";;;" + item.Age);
            Console.WriteLine("--------------------------");
        }

        #endregion

        Console.Read();

    }
}