學習筆記 c 中的get與set學習

2021-07-04 02:02:33 字數 1877 閱讀 1118

c#不提倡使用者將字首設定為public, 為防止使用者任意對變數讀寫,引入屬性概念,而get與set方法為屬性內的限制(約束)條件。

比如需要編寫乙個類,裡面有年齡屬性:

例1:

public

class a

例2:

public

class b

內增加對age操作的限制條件, get為讀取,set為寫入條件

public

int age

set//如果對age進行賦值,set內的表示式限定了age能賦值的範圍}}

b b = new b();

b.age = -1; //-1<0,所以賦值失敗

b.age = 1; // 1>0,所以age = 1;

綜上所述,age變數只是用來限制age的可賦值內容, 可為何有些地方有

public int age , set {} },這樣裡面是空的,這樣做是為什麼呢。

例3:

private

string name; // 姓名字段

// the name property

public

string name

}

get{}訪問器必須返回屬性型別的值,執行get訪問器就相當於讀取字段(name)的值,get訪問器必須在return或throw語句終止;

set{}訪問器與返回void的方法類似,此引數使用乙個叫value的隱式引數,value型別與屬性(name)的型別相同;

public

string name

set

}my.name = "lilei";//通過呼叫屬性(name),給私有變數name賦值為lilei

屬性的命名:

只帶有 get 訪問器的屬性稱為唯讀屬性。無法對唯讀屬性賦值。

只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。

同時帶有 get 和 set 訪問器的屬性為讀寫屬性。

在屬性宣告中,get 和 set 訪問器都必須在屬性體的內部宣告。

set and get的用途: 一般是對類裡面的變數進行操作. 而不是直接對類的變數進行操作.

有乙個很大的作用就是: 便於維護.

例4:

如果乙個類的乙個變數int a ,在其它包或命名空間類中使用了1000次,但是過了許久,你想把a改為b,

如果直接對變數a操作的話,就得需求修改整個程式的1000處. 如果用屬性了,就不會了,只需改這個方法即可

public

int a

get }

//改為:

public

int b

get }

//除去這個屬性之外的地方根本不需要改變

private

string strname;

public

string strname

set

}

public string strname;的區別:

1.在封裝資料庫欄位的時候非常有用;

2.封裝以後,比沒有封裝更加方便。如果你要做條件判斷、轉換等 操作,在get、set你做會更方便。而且還保護了原欄位。

假設_username是資料庫字段,如果程式設計師不想公開這個屬性,而是做一些變換,這樣資料安全性更高。

public

string username

set

}

c 中 get與set的用法

1 當引用屬性時,除非該屬性為賦值目標,否則將呼叫get訪問器讀取該屬性的值。例如 employeee1 newemployee console.write e1.name thegetaccessorisinvokedhereget 訪問器必須在return或throw語句中終止,並且控制不能超出...

關於C 中的get與set函式

在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而...

c 中get與set的用法詳解

在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而...