日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

set()与get()详细解答(C#)

發布時間:2023/12/10 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 set()与get()详细解答(C#) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這幾天在搬磚時候用到了set()與get(),同事問了我一些問題,我打算在博客中總結一下。
覺得幫助到了您,幫我點個贊哦。

屬性訪問器

其實說白了就是操作一個屬性,更通俗一點說就是對一個變量的取值與賦值。

先來看get()

get 訪問器必須在 return 或 throw 語句中終止,并且控制不能超出訪問器體。

private int a; // 私有的變量 public int A // 公有變量,這個變量作用就是得到私有變量的值 {get {return a; //這里的return就是上邊說的必須在 return 或 throw 語句中終止} }

現在還是不懂對吧,這個變量怎么還能加{ }里邊寫語句呢。嘿嘿就是這么神奇,就是這么規定的。
當你改變a的值,A的值也會變。
假如你在主函數當中有這么個操作:

a=5;

你會發現運行完a=5以后A也變成了5。

當你使用這個公有變量A當做右值給其他變量賦值的時候,他就會執行{ }里邊的語句。
假如你在主函數當中有這么個操作:

int B=A;

這個時候并不是把A的值直接給B,而是先執行A里邊的get(),把a的值返回給A,再將A的值傳遞給B;
這時候相當于

int B=0; A=a; B=A;

只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
假如你在主函數當中有這么個操作:

int B=2; A=B;

這個時候直接把B的值給A,但是編譯器報錯,提示A是只讀的;

當引用屬性時,除非該屬性為賦值目標,否則將調用 get 訪問器讀取該屬性的值。
白話解釋一下,當變量定義時使用get,那么變量在作為右值給其他變量賦值或者當做函數參數值時候,會先運行get里邊的語句。當做為左值被賦值時候則報錯。
現在總結一下:
1.get就是返回一個值或者說屬性;
2.在定義時使用get的變量在使用作為右值時先執行get里邊的語句返回給變量再去使用;
3.在定義時使用get的變量在使用作為左值時報錯;
不能光說不練啊,接下來寫個控制臺程序來驗證一下。
先來源碼

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApplication1 {class Program{static private int a = 3;static public int A{get { return a; }}static void Main(string[] args){int B=0;a = 5;A = 22;B = A;}} }

這個時候編譯一下,報錯了:
錯誤 1 無法對屬性或索引器“ConsoleApplication1.Program.A”賦值 – 它是只讀的

接下來就把這句話屏蔽掉,編譯運行打斷點。

在給a賦值時候,在使用A時候打個斷點,在A的get里邊打個斷點。
運行一下看一下
先運行到:a = 5;這個時候A與a都還為3;

按F10單步再接著往下邊運行
我們驚奇的發現Aa同時變成了5

按F10單步再接著往下邊運行,就會進入get

按F10單步再接著往下邊運行,才到A給B賦值。

好啦,get我們講完啦。接下來是set

再來看set()

set 訪問器與返回 void 的方法類似。它使用稱為 value 的隱式參數,此參數的類型是屬性的類型。

private int a; public int A {set {a = value; } }

當你改變A的值,a的值也會變。
假如你在主函數當中有這么個操作:

A=5;

你會發現運行完A=5以后a也變成了5。

當你使用這個公有變量A當做左值被其他變量賦值的時候,他就會執行{ }里邊的語句。
假如你在主函數當中有這么個操作:

int B=3; A = B;

這個時候并不是只把B的值給A,還會將A的值賦值給a;
這時候相當于

int B=3; A=B; a=A;

只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
假如你在主函數當中有這么個操作:

int B=2; A=B;

這個時候直接把A的值給B,但是編譯器報錯,提示A是只寫的;

現在總結一下:
1.set改變A變量時候a的值也會改。
2.只有set屬性的變量是只讀的。

不能光說不練啊,接下來寫個控制臺程序來驗證一下。
先來源碼

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApplication1 {class Program{static private int a = 3;static public int A{set { a = value; }}static void Main(string[] args){int B = 0;A = 22;B = A;}} }

這個時候編譯一下,報錯了:
錯誤 1 無法對屬性或索引器“ConsoleApplication1.Program.A”賦值 – 它是只讀的

接下來就把這句話屏蔽掉,編譯運行打斷點。

我們在給A賦值時打斷點,再在set處打斷點。
運行一下看一下
先運行到:a = 3;這個時候A里邊還是空的,這是因為A是只寫的沒辦法讀出來他的數值;

按F10單步再接著往下邊運行,直接先到set中,a的值變成了22。神奇吧

按F10單步再接著往下邊運行,程序結束。

好啦,get、set我們講完啦。接下來是結合在一塊。

再來看set()get()

同時帶有 get 和 set 訪問器的屬性為讀寫屬性。

private int a; // 私有的變量 public int A // 公有變量,這個變量作用就是得到私有變量的值 {get {return a; }set {a = value; } }

經過上述講解,我們直接來看代碼,編譯調試看一下。源代碼:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApplication1 {class Program{static private int a = 33;static public int A{get { return a; }set { a = value; }}static void Main(string[] args){int B;B = A;a = 55;}} }

這個代碼自己編譯調試一下吧,自己建一個工程,直接復制過去就好了。

總結:

1、A4與a4的值,總是相等。

2、若要修改a4,則需要通過A4修改即可。a4的往往通過設置外部屬性A4值的方式,然后在A4屬性內設置一些條件,來更新a4。

3、Value的值,總是等于外部屬性A4的值。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的set()与get()详细解答(C#)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。