物件導向 GET/SET 與 一些心得

摘要:物件導向 GET/SET 與 一些心得

Q: GET/SET的意義

private string _sname;

public string sname {

   get{ return  _sname; }

   set { _sname = value; }

}

1.

比如說這個類別叫Student的話

Student std = new Student();

當你使用      

std.sname 想要讀取sname的值的話 則是GET

若是往std.sname裡面塞值的話 則是 SET  如  std.sname = "CLRIS";

2.

為何要多創一個_sname 

類型 'System.StackOverflowException' 的未處理例外狀況發生

若不這樣多創一個變數就接值 最後會發生以上這個錯誤

值得注意的是 set裡面的value 則是呼叫它的實體塞進來的值

 

3.

GET SET最後都是回到sname 的內容

GET 裡面運算式會設定給sname 最後給呼叫者拿取sname內容

SET 裡面運算式會設定給sname並改變sname內容

 

 


Q:  SET 與 存取 類別涵式

要注意不要寫錯

若是要使用SET     std.欄位 = 給予的值;

若是使用類別的函式則是   std.方法名稱( 參數);


Q: 創出來的物件的生命週期

如果 你使用Student std = new Student();

則std 裡面的欄位值則會一直存在


Q: 為何類別裡面有創欄位卻存取不到

類別裡面的欄位 記得要加修飾字 不然會存取不到 因為預設是private

string sName = "123";   <===這種寫法物件無法取得此欄位


若是這個類別有用到namespace

namespace test{

   public class student{

      }

}

 

則創建物件時要用包含namespace的完整名稱

test.student oStd = new test.student();

或者可以維持原樣但是要

using test;


靜態類別

public static class static_class
{
    public static string sName = "123";
 
}
 
則不用NEW他 就可以使用了,但是不能被物件化
  response.write(static_class.sName);   <====就會印出123
 
/// 01.為 C# 2.0 的新增功能,一種不需要使用 new 關鍵字所建立該類別的物件,
/// 使用者可以透過靜態類別的名稱存取其成員,不須要建立該類別的物件,
/// 靜態類別只有包含靜態成員
 

也可以類別不是靜態,但是某欄位是靜態

使用此欄位時不需要NEW