存取子(accessors) get & set
存取子(accessors) get & set在程式設計中很常用到,可以用來對特定的數值做一些處理。其中get的意思相當於「提供」,而set的意思相當於「設定」。
下面我寫一個程式,設定學生的成績,當學生的成績小於60分時自動加到60分,這時候就可以運用存取子(accessors) get & set,程式語法如下:
class Student
{
private int grade;
public int Grade
{
get
{
return grade;
}
set
{
if (value < 60) { grade= 60; }
else { grade=value; }
}
}
}
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Grade = 50;
Console.WriteLine(s.Grade);
}
}
我設定學生成績為50,因為我在Grade這個變數裡面的set已經寫了
if (value < 60) { grade= 60; }
else { grade=value; }
這一段程式會讓學生成績<60的時候自動加到60分,所以這段程式的最後輸出結果會是60。
如果拿掉set,只保留get,就變成了唯讀屬性。例如我再寫一個程式,這個程式計算學生的金錢為悠遊卡和現金。
class Student
{
private int easycard=100;
private int cash = 500;
public int Money
{
get
{
return easycard + cash;
}
}
}
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Money = 100; ※這一行會造成程式錯誤,因為只有寫get是唯讀屬性
Console.WriteLine(s.Money);
}
}
在上面的程式中,在處理變數Money時我只有寫get,沒有寫set,這時候我在主程式寫s.Money = 100;這一行在程式中就會出現錯誤,因為Money是唯讀屬性,不能夠設定,所以要把s.Money = 100;這一行刪除掉,然後才能執行程式,程式的執行結果easycard=100再加上cash=500就是600。
使用get & set有甚麼好處?這是要對於存取private變數的特殊寫法,為了防止一些意外操作所以採取把變數設為private,然後利用get & set,若只有保留get時變成唯讀屬性。
這次 get & set的完整範例程式碼如下:
class Student
{
private int grade;
public int Grade
{
get
{
return grade;
}
set
{
if (value < 60) { grade= 60; }
else { grade=value; }
}
}
private int easycard=100;
private int cash = 500;
public int Money
{
get
{
return easycard + cash;
}
}
}
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Grade = 50;
Console.WriteLine(s.Grade);
Console.WriteLine(s.Money);
}
}
留言列表