本篇擷取重點:
一、類別
二、定義類別語法
1. 常用成員存取修飾詞
2. 欄位資料成員
欄位資料成員為類別內所定義的變數。
欄位定義方式和一般變數相同。
==================================================================
貼心小補充:
欄位:通常將存取修飾詞設為 private,然後宣告唯獨 (readonly 修飾詞),作為 【類別內部】 用來儲存資料使用。(readonly的使用是為了在類別建構式設定其值之後其他的程式就不能改變該變數的值,因此 private readonly 的意思是 "只能限在類別內使用,而且在初始化後就不能改變其值")
有一個容易混淆的點需要釐清,主程式 main() 方法內的定義變數不能稱為稱為資料成員,因為它並不是欄位而是區域變數,是存在於方法 (函式) 層次 (function-level) 的變數,方法可以存取欄位,但類別中的其他方法並無法存取特定方法內的變數。
欄位與區域變數之差異,用存取範圍來敍述會比較清楚。
感謝@studyazure大大的更正及觀念提供!!
==================================================================
3. 屬性資料成員
屬性 配合 get/set 存取子來設定或取得(存取)欄位資料的內容,以保護欄位資料內容。
==================================================================
貼心小補充:
屬性:通常將存取修飾詞設為 public ,透過 get 和 set 來控制外部的存取及修改,來達到對屬性的封裝。
==================================================================
4. 方法成員
參考資料:
http://dog0416.blogspot.com/2017/11/cvisual-studio-class-and-object.html
明日(9/14)預定探討課題:
"不能將主程式 main() 方法內定義變數稱為資料成員。"
不知道這是哪本書裡面寫的?
不論是否為main()方法,只要是定義在方法內的變數都不能稱作是該類別的資料成員,一般會用區域變數 (local variable) 來稱呼,在方法內定義的變數,可用範圍就只在方法內,一跑出方法就不能用了。
屬性用 { get; set; } 是為了簡化一些不用特別規則,只做賦值與取值的程式實作,不過您的例子的 get 和 set 放反了喔。
readonly的使用是為了在類別建構式設定其值之後其他的程式就不能改變該變數的值,因此 private readonly 的意思是 "只能限在類別內使用,而且在初始化後就不能改變其值",即便是用屬性 set 亦然,所以您的說法可能要修正一下。
欄位 (field) 有些書會叫它成員變數 (member variable),意指是在類別層次 (class-level) 的資料,區域變數是存在於方法 (函式) 層次 (function-level) 的變數,方法可以存取欄位,但類別中的其他方法無法存取特定方法內的變數,用存取範圍來敍述會比較清楚。
恩恩,聽完大大的詳細解釋就清楚了,謝謝您 XDD