亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

深入C#中get與set的詳解

2020-01-24 03:14:46
字體:
來源:轉載
供稿:網友
釋一:
屬性的訪問器包含與獲取(讀取或計算)或設置(寫)屬性有關的可執行語句。訪問器聲明可以包含 get 訪問器或 set 訪問器,或者兩者均包含。聲明采用下列形式之一:
get {}
set {}
get 訪問器
get 訪問器體與方法體相似。它必須返回屬性類型的值。執行 get 訪問器相當于讀取字段的值。以下是返回私有字段 name 的值的 get 訪問器:
復制代碼 代碼如下:

private string name;   // the name field
public string Name   // the Name property
{
   get
   {
      return name;
   }
}

當引用屬性時,除非該屬性為賦值目標,否則將調用 get 訪問器讀取該屬性的值。例如:
Employee e1 = new Employee();
...
Console.Write(e1.Name);   // The get accessor is invoked here
get 訪問器必須在 return 或 throw 語句中終止,并且控制不能超出訪問器體。
set 訪問器
set 訪問器與返回 void 的方法類似。它使用稱為 value 的隱式參數,此參數的類型是屬性的類型。在下例中,set 訪問器被添加到 Name 屬性:
復制代碼 代碼如下:

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

當對屬性賦值時,用提供新值的參數調用 set 訪問器。例如:
e1.Name = "Joe";   // The set accessor is invoked here
在 set 訪問器中對局部變量聲明使用隱式參數名 (value) 是錯誤的。
備注
屬性按如下方式,根據所使用的訪問器進行分類:
只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有 get 和 set 訪問器的屬性為讀寫屬性。
在屬性聲明中,get 和 set 訪問器都必須在屬性體的內部聲明。
使用 get 訪問器更改對象的狀態是一種錯誤的編程樣式。例如,以下訪問器在每次訪問 number 字段時都產生更改對象狀態的副作用。
復制代碼 代碼如下:

public int Number
{
   get
   {
      return number++;   // Don't do this
   }
}

可以將 get 訪問器用于返回字段值,或用于計算字段值并將其返回。例如:
復制代碼 代碼如下:

public string Name
{
   get
   {
      return name != null ? name : "NA";
   }
}

在上述代碼段中,如果不對 Name 屬性賦值,它將返回值 NA。
示例 1
此例說明如何訪問基類中被派生類中具有同一名稱的另一個屬性隱藏的屬性。
復制代碼 代碼如下:

// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
   private string name;
   public string Name
   {
      get
      {
         return name;
      }
      set
      {
         name = value;
      }
   }
}
public class DerivedClass : BaseClass
{
   private string name;
   public new string Name   // Notice the use of the new modifier
   {
      get
      {
         return name;
      }
      set
      {
         name = value;
      }
   }
}
public class MainClass
{
   public static void Main()
   {
      DerivedClass d1 = new DerivedClass();
      d1.Name = "John"; // Derived class property
      Console.WriteLine("Name in the derived class is: {0}",d1.Name);
      ((BaseClass)d1).Name = "Mary"; // Base class property
      Console.WriteLine("Name in the base class is: {0}",
         ((BaseClass)d1).Name);  
   }
}

輸出
Name in the derived class is: John
Name in the base class is: Mary
以下是上例中顯示的重點:
派生類中的屬性 Name 隱藏基類中的屬性 Name。在這種情況下,派生類的該屬性聲明使用 new 修飾符:
   public new string Name
   {
   ...
轉換 (BaseClass) 用于訪問基類中的隱藏屬性:
   ((BaseClass)d1).Name = "Mary";

釋二:
代碼如下:
復制代碼 代碼如下:

public class Car
{private string color;
 public string Color
 {
   get
   {return color;
    }
   set
    {color=value;
    }
  }
}

我的理解是:通過GET和SET對公有變量Color進行讀寫操作,實際就是間接更改color私有變量的值,那既然如此。為何不設color為public,讓實例進接對color進行讀寫操作呢?

如果有一天,老板讓你把這個類改成
當汽車的顏色改變時,同時計算一下汽車的《價格》屬性
那么如果直接對Color操作,你不是死定了?

“屬性”是.net的特色之一。
其實就相當于方法,尤其是java中經常會用到get、set方法(.net的有些思想就是java的)。

屬性的真實作用不只是為了更改某個成員變量的值
比如form的size屬性在set的同時要重畫form,如果你不想讓用戶對color修改,就不要提供set方法

是面向對象具有的
set and get
它的用途:一般是對類里面的變量進行操作. 而不是直接對類的變量進行操作.
有一個很大的作用就是:便于維護.
因為:
如果一個類的一個變量int a ,在其它包或命名空間類中使用了1000次,但是過了許久,你想把a改為b,
如果直接對變量a操作的話,就得需求修改整個程序的1000處.  如果用屬性了,就不會了,只需改這個方法即可
復制代碼 代碼如下:

public int A
{
 set
 {
   a = value;
 }
 get
 {
   return a;
 }
}
放為:
public int B
{
 set
 {
   b = value;
 }
 get
 {
   return b;
 }
}

除去這個屬性之外的地方根本不需要改變
通過上面的講解。有一點點明白了。
是不是讓滿足一定條件讓GET和SET來改變類中的私有變量。而不能讓實例直接操作。像上面的代碼保證了color屬性的安全性。
既然如此可不可以寫成
復制代碼 代碼如下:

set
{color=value*20;  //value是不是相當于Color的值
}

我當初和你有一樣的想法.但是現在改變了。
舉個例子說明一下吧.
復制代碼 代碼如下:

public class Car
{
 public string Color
 {
   get
   {
      if(this.viewstate["color"]!= null)
       {
       return this.viewstate["color"];
       }
       return "":
    }
   set
    {
      this.viewstate["color"];=value;
    }
  }
}

在asp.net中通常這么使用.如果用變量的話就不好使用了。而且get,set中可以寫多個語句.如上的get.
不知道這樣解釋你滿意嗎?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人激情av在线| 亚洲精品资源在线| 日韩av日韩在线观看| 亚洲美女喷白浆| 在线看欧美日韩| 日韩在线观看免费高清完整版| 国产精品扒开腿做爽爽爽视频| 91久久精品国产91久久| 色悠久久久久综合先锋影音下载| 中文字幕日韩欧美在线视频| 欧美有码在线观看| 亚洲欧美一区二区三区情侣bbw| 日韩欧美在线国产| 91在线观看免费高清完整版在线观看| 成人久久一区二区| 成人免费福利在线| 色婷婷av一区二区三区久久| 91经典在线视频| 91亚洲精品一区二区| 38少妇精品导航| 亚洲欧美日韩久久久久久| 中文字幕亚洲一区| 国产一区二区视频在线观看| 91美女高潮出水| 一本一本久久a久久精品综合小说| 久久久精品视频在线观看| 国产精品免费视频xxxx| 国产精品美女网站| 456国产精品| 国产精品对白刺激| 98精品国产自产在线观看| 欧美美最猛性xxxxxx| 精品美女永久免费视频| 亚洲免费视频网站| 国产精品一二区| 日韩精品福利在线| 97精品国产97久久久久久春色| 亚洲美女黄色片| 久久久久久中文字幕| 国产精品色婷婷视频| 一本色道久久综合狠狠躁篇怎么玩| xxxxx成人.com| 人九九综合九九宗合| 久久天天躁狠狠躁夜夜av| 久久国产精品久久久| 国产亚洲欧美另类中文| 国产91精品视频在线观看| 欧美亚洲在线播放| 久久人体大胆视频| 亚洲天堂免费观看| 亚洲国产福利在线| 92看片淫黄大片看国产片| 欧美大秀在线观看| 国产精品免费久久久久久| 最新69国产成人精品视频免费| 亚洲午夜精品久久久久久久久久久久| 亚洲国产精品va在线看黑人| 日韩黄色av网站| 国产精品国语对白| 亚洲女人天堂视频| 欧美精品videosex性欧美| 精品国产一区二区三区久久狼黑人| 欧美第一淫aaasss性| 欧美成人午夜免费视在线看片| 国产97在线|亚洲| 日韩一区二区三区xxxx| 国产在线视频不卡| 国产一区二区三区在线看| 91欧美精品成人综合在线观看| 亚洲一区二区三区视频| 亚洲一区二区三区四区在线播放| 久久久精品网站| 欧美激情一区二区三级高清视频| 久久久亚洲国产| 中文字幕日韩高清| 欧美高清在线播放| 欧美视频裸体精品| 久久久成人的性感天堂| 久久综合免费视频影院| 亚洲sss综合天堂久久| 91精品在线国产| 亚洲男人天堂2023| 亚洲欧洲日产国产网站| 黑人极品videos精品欧美裸| 在线精品国产成人综合| 精品国产欧美一区二区三区成人| 欧美成人免费网| 姬川优奈aav一区二区| 欧美日韩一区二区在线播放| 日韩综合中文字幕| 在线成人免费网站| 欧美激情伊人电影| 成人免费自拍视频| 国产欧美精品日韩精品| 国产成人精品av在线| 久久影院中文字幕| 97国产成人精品视频| 亚洲精品久久久久久下一站| 国产精品国产亚洲伊人久久| 国产精品久久久久久久久免费| 国模极品一区二区三区| 日韩免费看的电影电视剧大全| 日韩风俗一区 二区| 日韩成人av在线播放| 91精品在线国产| 国产欧美精品日韩| 91精品国产色综合久久不卡98口| 久久久久久久一| 97视频免费观看| 黑丝美女久久久| 国产精品久久久久久一区二区| 57pao国产成人免费| 日本韩国欧美精品大片卡二| 日韩的一区二区| 欧美在线观看www| 国产精品久久99久久| 成人午夜黄色影院| 欧美日韩国产精品一区二区三区四区| 欧美亚洲另类激情另类| 亚洲精品网址在线观看| 国产成人精品久久二区二区| 中文字幕亚洲无线码在线一区| 亚洲成人精品在线| 国产精品一区二区久久久久| 日韩中文字幕在线看| 亚洲精品国产精品国产自| 亚洲视频精品在线| 91精品久久久久久久久久久久久久| 中文字幕日本精品| 国产亚洲欧美一区| 亚洲精品综合精品自拍| 亚洲精品视频在线观看视频| 国产精品久久久久久久9999| 国产精品久久久久久久久| 国产日本欧美在线观看| 国产亚洲精品一区二555| 欧美视频不卡中文| 亚洲男人7777| 中文字幕亚洲字幕| 国产精品成人av性教育| 欧美性xxxx极品hd欧美风情| 成人欧美一区二区三区黑人孕妇| 久久久久女教师免费一区| 亚洲欧美中文日韩在线v日本| 久久综合网hezyo| 久久精品国产成人精品| 欧美尺度大的性做爰视频| 91社区国产高清| 国产成+人+综合+亚洲欧美丁香花| 亚洲精品福利在线观看| 色先锋久久影院av| 国产精品自产拍在线观看| 亚洲成人免费网站| 亚洲va欧美va在线观看| 欧美激情视频一区二区| 亚洲综合中文字幕在线| 日韩欧美精品中文字幕| 亚洲视频一区二区| 97涩涩爰在线观看亚洲| 92国产精品久久久久首页| 亚洲精品国产综合久久| 亚洲欧美日韩在线一区| 色婷婷综合久久久久中文字幕1| 性欧美在线看片a免费观看|