成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

探尋C#中GET與SET的用法

開發 后端
get是讀取屬性時進行的操作,set是設置屬性時進行的操作。本文主要介紹了C#中get與set的用法,供大家參考。

get是讀取屬性時進行的操作,set是設置屬性時進行的操作。定義一個屬性如果只有get,這個屬性就是只讀的。同樣,只有set,屬性就是只寫的,當然只寫的屬性是沒有任務意義的。 

假設類是一個銀行,既能存錢也能取錢. 

  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   就像銀行里的自動存取款機,你看不見里面的money,但你能用set(存錢),用get(取錢)。m_money是一個私有字段,是分裝在類中的,類以外的程序不能直接訪問的,類的set和get成員是外部程序訪問類內部屬性的唯一方法,就像你去銀行取錢,你不能直接從銀行的保險柜里拿到錢,而是銀行營業人員把錢取出來給你的。 

屬性在調用者看來就像一個普通的變量,普通變量怎么用,它就怎么用,但作為類的設計者,你可以利用屬性來隱藏你類中的一些字段,使外界只能通過屬性來訪問你的字段,你可以通過屬性來限制外界對你的字段的存取,就利用get,set,如果你想讓用戶隨意存取你的字段,那么就實現set和get,如果只想讓用戶讀取字段,就只實現get,若只想讓用戶寫字段就只實現set,同時你還可以在C#中set與get中對用戶傳遞來的值進行一些驗證工作,以確保你的字段將含有正確的值。 

比如    

  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有一種函數的特征。 

C#中的get與set,一是隱藏組件或類內部的真實成員,二是用來建立約束的,比如,實現“有我沒你”這種約束。三是用來響應屬性變化事件,當屬性變化時做某事,只要寫在SET   方法里就行了。 

有兩種途徑揭示類的命名屬性——通過域成員或者通過屬性。前者是作為具有公共訪問性的成員變量而被實現的;后者并不直接回應存儲位置,只是通過   存取標志(accessors)被訪問。 

當你想讀出或寫入屬性的值時,存取標志限定了被實現的語句。用于讀出屬性的值的存取標志記為關鍵字get,而要修改屬性的值的讀寫符標志記為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類有一個命名為SquareFeet的屬性,它可以被讀和寫。實際的值存儲在一個可以從類內部訪問的變量中——如果你想當作一個域成員重寫它,你所要做的就是忽略存取標志而把變量重新定義為: 

public     int     SquareFeet; 

對于一個如此簡單的變量,這樣不錯。但是,如果你想要隱藏類內部存儲結構的細節時,就應該采用存取標志。在這種情況下,set   存取標志給值參數中的屬性傳遞新值。(可以改名,見第10行。) 

除了能夠隱藏實現細節外,你還可自由地限定各種操作: 

get     set:允許對屬性進行讀寫訪問。 

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

set     only:只允許寫屬性的值。 

除此之外,你可以獲得實現在set標志中有效代碼的機會。例如,由于種種原因(或根本沒有原因),你就能夠拒絕一個新值。***是沒有人告訴你它是一個動態屬性——當你***次請求它后,它會保存下來,故要盡可能地推遲資源分配。

C#中get與set的用法就介紹到這里,希望對大家有用。

【編輯推薦】

  1. 總結C#語言命名規范
  2. C#反射相關知識學習
  3. 大話F#和C#:是否會重蹈C#失敗的覆轍?
  4. 總結和學習C#接口
  5. 學習C#程序有感
責任編輯:book05 來源: 51CTO.com
相關推薦

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-08-26 17:10:09

C# 3.5新特性

2009-09-10 18:18:42

C# Button

2024-12-26 00:28:59

C#base?關鍵字

2009-09-11 09:59:47

2011-04-25 14:42:10

C#lock

2011-07-06 10:47:52

C#using

2009-08-26 14:48:21

C#打印分頁

2011-05-23 13:27:53

2024-03-19 14:18:48

C#后端編程

2009-09-10 14:52:55

C# get

2009-09-11 09:15:06

C# get方法

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-09-07 16:13:56

C# MessageB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 粉嫩av久久一区二区三区 | 天天久久 | 亚洲高清视频一区二区 | 国产一区二区三区免费 | 波多野结衣中文字幕一区二区三区 | 女女爱爱视频 | 久久成人精品视频 | 国产日韩精品一区二区 | 国产一级视频在线播放 | 日韩三级在线 | 97超碰在线播放 | www.日韩| 色婷婷av一区二区三区软件 | 免费精品视频在线观看 | 色综久久| 欧美亚洲另类在线 | 中文字幕在线中文 | 欧美日韩中文在线 | 欧美精品一区在线发布 | 成人精品鲁一区一区二区 | 国产精品一区在线 | 一区二区在线观看av | 国产精品国产三级国产aⅴ浪潮 | 四虎永久免费影院 | 欧美一区二区三区视频在线播放 | 综合二区| 国产成人av一区二区三区 | 欧美一级一 | 日本一区二区在线视频 | 免费a级毛片在线播放 | 久久se精品一区精品二区 | 992人人草| 亚洲免费一区二区 | 天天色天天射天天干 | 尹人av| 丁香婷婷综合激情五月色 | 五月精品视频 | 亚洲成网 | 日干夜干| av中文字幕网 | 久久久精品网 |