自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探尋C#中GET與SET的用法

開(kāi)發(fā) 后端
get是讀取屬性時(shí)進(jìn)行的操作,set是設(shè)置屬性時(shí)進(jìn)行的操作。本文主要介紹了C#中g(shù)et與set的用法,供大家參考。

get是讀取屬性時(shí)進(jìn)行的操作,set是設(shè)置屬性時(shí)進(jìn)行的操作。定義一個(gè)屬性如果只有g(shù)et,這個(gè)屬性就是只讀的。同樣,只有set,屬性就是只寫(xiě)的,當(dāng)然只寫(xiě)的屬性是沒(méi)有任務(wù)意義的。 

假設(shè)類(lèi)是一個(gè)銀行,既能存錢(qián)也能取錢(qián). 

  1. private     m_money;    
  2. private     class     bank()       
  3. {    
  4.       get     {    
  5.                 return     m_money;    
  6.                 }    
  7.       set     {    
  8.                 m_money=value    
  9.                 }     

m_money   就像銀行里的自動(dòng)存取款機(jī),你看不見(jiàn)里面的money,但你能用set(存錢(qián)),用get(取錢(qián))。m_money是一個(gè)私有字段,是分裝在類(lèi)中的,類(lèi)以外的程序不能直接訪問(wèn)的,類(lèi)的set和get成員是外部程序訪問(wèn)類(lèi)內(nèi)部屬性的唯一方法,就像你去銀行取錢(qián),你不能直接從銀行的保險(xiǎn)柜里拿到錢(qián),而是銀行營(yíng)業(yè)人員把錢(qián)取出來(lái)給你的。 

屬性在調(diào)用者看來(lái)就像一個(gè)普通的變量,普通變量怎么用,它就怎么用,但作為類(lèi)的設(shè)計(jì)者,你可以利用屬性來(lái)隱藏你類(lèi)中的一些字段,使外界只能通過(guò)屬性來(lái)訪問(wèn)你的字段,你可以通過(guò)屬性來(lái)限制外界對(duì)你的字段的存取,就利用get,set,如果你想讓用戶(hù)隨意存取你的字段,那么就實(shí)現(xiàn)set和get,如果只想讓用戶(hù)讀取字段,就只實(shí)現(xiàn)get,若只想讓用戶(hù)寫(xiě)字段就只實(shí)現(xiàn)set,同時(shí)你還可以在C#中set與get中對(duì)用戶(hù)傳遞來(lái)的值進(jìn)行一些驗(yàn)證工作,以確保你的字段將含有正確的值。 

比如    

  1. private     int     a;    
  2. public     int     Index    
  3.         {    
  4.             get    
  5.                   {    
  6.                       return     a;    
  7.                     }    
  8.             set    
  9.                     {    
  10.                         if     (value>0)    
  11.                                 a=value;    
  12.                           else    
  13.                               a=0;    
  14.                         }    
  15.               }   

可以看出,get\set有一種函數(shù)的特征。 

C#中的get與set,一是隱藏組件或類(lèi)內(nèi)部的真實(shí)成員,二是用來(lái)建立約束的,比如,實(shí)現(xiàn)“有我沒(méi)你”這種約束。三是用來(lái)響應(yīng)屬性變化事件,當(dāng)屬性變化時(shí)做某事,只要寫(xiě)在SET   方法里就行了。 

有兩種途徑揭示類(lèi)的命名屬性——通過(guò)域成員或者通過(guò)屬性。前者是作為具有公共訪問(wèn)性的成員變量而被實(shí)現(xiàn)的;后者并不直接回應(yīng)存儲(chǔ)位置,只是通過(guò)   存取標(biāo)志(accessors)被訪問(wèn)。 

當(dāng)你想讀出或?qū)懭雽傩缘闹禃r(shí),存取標(biāo)志限定了被實(shí)現(xiàn)的語(yǔ)句。用于讀出屬性的值的存取標(biāo)志記為關(guān)鍵字get,而要修改屬性的值的讀寫(xiě)符標(biāo)志記為set。   

  1. using     System;    
  2.    
  3.  public     class     House    
  4.  {    
  5.  private     int     m_nSqFeet;    
  6.    
  7.  public     int     SquareFeet    
  8.  {    
  9.  get     {     return     m_nSqFeet;     }    
  10.  set     {     m_nSqFeet     =     value;     }    
  11.  }    
  12.  }    
  13.    
  14.  class     TestApp    
  15.  {    
  16.  public     static     void     Main()    
  17.  {    
  18.  House     myHouse     =     new     House();    
  19.  myHouse.SquareFeet     =     250;    
  20.  Console.WriteLine(myHouse.SquareFeet);    
  21.  }    
  22.  }     

House類(lèi)有一個(gè)命名為SquareFeet的屬性,它可以被讀和寫(xiě)。實(shí)際的值存儲(chǔ)在一個(gè)可以從類(lèi)內(nèi)部訪問(wèn)的變量中——如果你想當(dāng)作一個(gè)域成員重寫(xiě)它,你所要做的就是忽略存取標(biāo)志而把變量重新定義為: 

public     int     SquareFeet; 

對(duì)于一個(gè)如此簡(jiǎn)單的變量,這樣不錯(cuò)。但是,如果你想要隱藏類(lèi)內(nèi)部存儲(chǔ)結(jié)構(gòu)的細(xì)節(jié)時(shí),就應(yīng)該采用存取標(biāo)志。在這種情況下,set   存取標(biāo)志給值參數(shù)中的屬性傳遞新值。(可以改名,見(jiàn)第10行。) 

除了能夠隱藏實(shí)現(xiàn)細(xì)節(jié)外,你還可自由地限定各種操作: 

get     set:允許對(duì)屬性進(jìn)行讀寫(xiě)訪問(wèn)。 

get     only:只允許讀屬性的值。 

set     only:只允許寫(xiě)屬性的值。 

除此之外,你可以獲得實(shí)現(xiàn)在set標(biāo)志中有效代碼的機(jī)會(huì)。例如,由于種種原因(或根本沒(méi)有原因),你就能夠拒絕一個(gè)新值。***是沒(méi)有人告訴你它是一個(gè)動(dòng)態(tài)屬性——當(dāng)你***次請(qǐng)求它后,它會(huì)保存下來(lái),故要盡可能地推遲資源分配。

C#中g(shù)et與set的用法就介紹到這里,希望對(duì)大家有用。

【編輯推薦】

  1. 總結(jié)C#語(yǔ)言命名規(guī)范
  2. C#反射相關(guān)知識(shí)學(xué)習(xí)
  3. 大話F#和C#:是否會(huì)重蹈C#失敗的覆轍?
  4. 總結(jié)和學(xué)習(xí)C#接口
  5. 學(xué)習(xí)C#程序有感
責(zé)任編輯:book05 來(lái)源: 51CTO.com
相關(guān)推薦

2009-09-10 16:38:43

C# get set用

2009-09-10 15:27:16

C# get set

2009-09-10 16:41:13

C# get post

2009-09-11 09:15:32

C# get set

2009-09-10 18:18:42

C# Button

2009-08-26 17:10:09

C# 3.5新特性

2024-12-26 00:28:59

C#base?關(guān)鍵字

2009-09-11 09:59:47

2011-07-06 10:47:52

C#using

2009-08-26 14:48:21

C#打印分頁(yè)

2011-04-25 14:42:10

C#lock

2009-09-11 09:15:06

C# get方法

2024-03-19 14:18:48

C#后端編程

2009-09-10 14:52:55

C# get

2011-05-23 13:27:53

2024-05-16 13:36:04

C#委托事件

2009-08-27 16:00:59

C#中using用法

2009-08-21 09:30:05

is和as操作符

2013-06-05 10:11:20

索引器C#

2009-08-26 09:58:22

C#關(guān)鍵字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)