C# get & set 存取子 class的屬性(Property)可以讓讀、寫、運算機制變得更有彈性, 在這裡要介紹屬性的一個特殊的methods,稱為: 存取子(accessors),也可稱為訪問器 存取子包含 get存取子、set存取子
get 可以形容成 “提供”,要返回結果 set 則可形容成 “設定”,多數在處理計算及邏輯處理
那存取子有甚麼功用呢? 例如:在一般情況下,將變數的狀態屬性設定為string,就只能用來存取字串,int就只能用來處理整數 在class中,這些狀態屬性就可以透過存取子做額外加入邏輯判斷等描述式
get 範例 可以透過 get 存取子,將字串進行判斷、處理…. 再返回結果
//建立 A 類別
public class A
{
//包含兩個string
public string name;
public string st
{
//使用get存取子
get {
if (name != "")
{
return name;
}else
{
return "default";
}
}
}
}
static void Main(string[] args)
{
//實例化A類別
A x = new A();
//設定A.name
x.name = "Brown";
//取得 st
Console.WriteLine("帳號:"+ x.st);
}
set 範例 set含有特殊的keyword: value 當有值傳入時,都會存入value中
//建立 A 類別
public class A
{
//包含兩個string
public string v;
public string st
{
//使用set存取子
set
{
//不多解釋,傳入值都會存在 value
Console.WriteLine("帳號:" + value);
}
}
}
static void Main(string[] args)
{
//實例化A類別
A x = new A();
//A.st 傳入值
x.st = "Adam";
}
get and set 範例 可以試著執行,看看結果會是如何
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
//建立 A 類別
public class A
{
public string v;
public string name;
//A class被實例化時,會立即執行建構子內容,並且可以傳入參數
public string Show
{
get { return name; }
set {
name = v;
Console.WriteLine("I am "+value);
}
}
}
static void Main(string[] args)
{
//實例化A類別
A x = new A();
x.v = "Brown";
x.Show = "Joe";
Console.WriteLine(x.Show);
}
}
}