日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#中g(shù)et、set函數(shù)怎么用

這篇文章將為大家詳細(xì)講解有關(guān)C#中g(shù)et、set函數(shù)怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

十載的貴州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整貴州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“貴州網(wǎng)站設(shè)計(jì)”,“貴州網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

C# get set不提倡將域的保護(hù)級(jí)別設(shè)為 public而使用戶在類外任意操作--那樣太不OO,或者具體點(diǎn)說太不安全!對(duì)所有有必要在類外可見的域,C#推薦采用屬性來表達(dá)。屬性不表示存儲(chǔ)位置,這是屬性和域的根本性的區(qū)別。下面是一個(gè)典型的屬性設(shè)計(jì):

using System;  class MyClass  {  int integer;  public int Integer   {  get {return integer;}  set {integer=value;}  }  }  class Test  {  public static void Main()  {  MyClass MyObject=new MyClass();  Console.Write(MyObject.Integer);  MyObject.Integer++;  Console.Write(MyObject.Integer);  }  }

一如我們期待的那樣,程序輸出0 1。我們可以看到屬性通過對(duì)方法的包裝向程序員提供了一個(gè)友好的域成員的存取界面。這里的value是C# get set的關(guān)鍵字,是我們進(jìn)行屬性操作時(shí)的set的隱含參數(shù),也就是我們?cè)趫?zhí)行屬性寫操作時(shí)的右值。

屬性提供了只讀(get),只寫(set),讀寫(get和 set)三種接口操作。對(duì)域的這三種操作,我們必須在同一個(gè)屬性名下聲明,而不可以將它們分離,看下面的實(shí)現(xiàn):

class MyClass  {  private string name;  public string Name  {  get { return name; }  }  public string Name  {  set { name = value; }  }  }

上面這種分離Name屬性實(shí)現(xiàn)的方法是錯(cuò)誤的!我們應(yīng)該像前面的例子一樣將他們放在一起。值得注意的是三種屬性(只讀,只寫,讀寫)被C# get set認(rèn)為是同一個(gè)屬性名,看下面的例子:

class MyClass  {  protected int num=0;  public int Num  {  set {  num=value;  }  }  }  class MyClassDerived: MyClass  {  new public int Num  {  get {  return num;  }  }  }  class Test  {  public static void Main()  {  MyClassDerived MyObject = new MyClassDerived();  //MyObject.Num= 1; //錯(cuò)誤 !  ((MyClass)MyObject).Num = 1;  }  }

我們可以看到MyClassDerived中的屬性Num-get{}屏蔽了MyClass中屬性Num-set{}的定義。

當(dāng)然屬性遠(yuǎn)遠(yuǎn)不止僅僅限于域的接口操作,屬性的本質(zhì)還是方法,我們可以根據(jù)程序邏輯在屬性的提取或賦值時(shí)進(jìn)行某些檢查,警告等額外操作,看下面的例子:

class MyClass  {  private string name;  public string Name  {  get { return name; }  set {  if (value==null)  name="Microsoft";  else name=value;  }  }  }

由于屬性的方法的本質(zhì),屬性當(dāng)然也有方法的種種修飾。屬性也有5種存取修飾符,但屬性的存取修飾往往為public,否則我們也就失去了屬性作為類的公共接口的意義。除了方法的多參數(shù)帶來的方法重載等特性屬性不具備外, virtual, sealed, override, abstract等修飾符對(duì)屬性與方法同樣的行為,但由于屬性在本質(zhì)上被實(shí)現(xiàn)為兩個(gè)方法,它的某些行為需要我們注意??聪旅娴睦樱?/p>

abstract class A  {  int y;  public virtual int X  {  get { return 0; }  }  public virtual int Y  {  get { return y; }  set { y = value; }  }  public abstract int Z { get; set; }  }  class B: A  {  int z;  public override int X  {  get { return base.X + 1; }  }  public override int Y  {  set { base.Y = value < 0? 0: value; }  }  public override int Z  {  get { return z; }  set { z = value; }  }  }

這個(gè)例子集中地展示了屬性在繼承上下文中的某些典型行為。這里,類A由于抽象屬性Z的存在而必須聲明為abstract。子類B中通過base關(guān)鍵字來引用父類A的屬性。類B中可以只通過Y-set便覆蓋了類A中的虛屬性。

靜態(tài)屬性和靜態(tài)方法一樣只能存取類的靜態(tài)域變量。我們也可以像做外部方法那樣,聲明外部屬性。

關(guān)于“C#中g(shù)et、set函數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


本文題目:C#中g(shù)et、set函數(shù)怎么用
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/ijhiej.html