---------------------- asp.net+android+io開發s、.net培訓、期待與您交流! ----------------------
c#屬性是什麼
首先c#屬性是不儲存任何的實值,它是域的擴充套件(即我們通常說的成員變數等)
它配合c#中的域(字段)使用,使之構造乙個安全的應用程式,為什麼說通過屬性來替代域會提高應用程式的安全呢?
原因就在於c#屬性通過訪問器(accessors)用進行資料訪問.所以c#的屬性可以設定為唯讀或只寫.
而字段卻沒有這樣的功能(只可設定唯讀).我們都知道在程式中有時我們是不允許使用者修改一些屬性的,比如姓名
原則上我們是不能修改此屬性.那麼我們就可以通過乙個屬性來實現這樣的功能.讓它設定為唯讀屬性.
前面我們說到屬性是字段的擴充套件,我們都知道如果要在類外部訪問字段,就要公開(public)這個成員字段
但是如果我們真的這樣做了,那這個成員欄位的就可以被任意訪問(包括修改,讀取).那怎麼辦呢?
用乙個屬性就可以解決這個問題.
c#屬性是通過get(讀取)、set(設定)來訪問屬性的.
一般我們用大寫開頭表示屬性,屬性跟字段的變數名一樣,用大小寫區分。
下面看看怎麼來使用屬性的:
從上面看出,物件 shi 是把值給 shi.age的,沒有直接給port類中的 age,因為age被設為了私有變數,只有通過age來間接的把值給 age,這樣就能起到對age的保護。這裡我們只是簡單的對age傳值,並沒有做什麼任何判斷,我們只想讓age拿到它想要的值,就得在 set 裡面過濾掉 age 不想要得到的值,然後再給 age。外面想要age的值只能通過age來拿到。通過上面的例子我們可以看出屬性只不過是做了乙個中介的角色而已,真正工作的還是字段(域),但這樣做可以更物件導向 寫出更安全的應用程式.using system;
using system.collections.generic;
using system.linq;
using system.text;
class port
get}}}
}
我們可以在age裡面通過 set get 來對其指定不同的屬性,只在age裡有 set{} 那麼這個age就是個只寫屬性,age裡面只有 get{} 那麼這個age就是唯讀屬性。
---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
詳細請檢視:
黑馬程式設計師 自動屬性
一般屬性與自動屬性區別 先看示例 一般屬性 自動屬性 class a set class a c 中用get和set對類的屬性進行訪問和設定,保障類中資料的安全。自動屬性是不對字段進行邏輯驗證的操作.由於自動屬性可以省略後備字段,用自動屬性,一般屬性簡明。這樣子寫,這兩種方法沒區別.那麼什麼情況下用...
黑馬程式設計師 屬性和方法
windows phone 7手機開發 net培訓 期待與您交流!屬性 屬性是一種用於訪問物件或類的特性的成員。屬性可以包括字串的長度 字型的大小 窗體的標題和客戶名稱。屬性是成員的自然擴充套件,二者都是關聯型別的命名成員。方法 方法是一種用於實現由物件或類執行操作的成員。方法在類或結構中宣告,宣告...
黑馬程式設計師
asp.net android ios開發 net培訓 期待與您交流!map hashtable 底層是雜湊表資料結構,不可以存入null鍵和null值。該執行緒是同步的,jdk1.0出現,效率低。hashmap 底層是雜湊表資料結構,允許使用null鍵和null值。該集合執行緒是不同步的,將has...