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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C# 对get和set的理解

發(fā)布時(shí)間:2024/2/28 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 对get和set的理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用 get set和不使用的對(duì)比

比如,有兩個(gè)類person:

//第一種方式 public class person {public string name; }//第二種方式 public class person {public string Name { set; get; } }

第一個(gè)類型的name屬性未封裝,其name屬性直接通過(guò)public關(guān)鍵字暴露給系統(tǒng)中的其他類了

第二個(gè)類型的name屬性通過(guò)get set關(guān)鍵字進(jìn)行了封裝,get和set分別對(duì)應(yīng)的是可讀和可寫,相當(dāng)于如下代碼:

private string name;public string Name//這個(gè)Name最好和屬性名稱相同,(如果想定義成名稱不同,見(jiàn)文章底部)并且首字母一定要大寫 {get { return name; }set { name = value; } }

c#在定義類時(shí),通常要把類中聲明的對(duì)象封裝起來(lái),使得外界不能訪問(wèn)這個(gè)屬性。上述代碼中如果去掉set部分,則外界只能讀取name的值,如果去掉get部分,則只能給name賦值。這樣就可以控制外界對(duì)私有屬性name的訪問(wèn)權(quán)限了,這種寫法是C#的一個(gè)特性。

當(dāng)然你也可以通過(guò)自己創(chuàng)建函數(shù)來(lái)對(duì)name進(jìn)行取值和賦值,但這樣就顯得比較麻煩了。

屬性與普通變量不同就在于, 普通變量就是放在屋子里的東西, 是什么樣明明白白. 而屬性則是在屋子的門口放了個(gè)守門人, 你拿東西放東西要經(jīng)過(guò)他.

這個(gè)守門人就是屬性訪問(wèn)器, 拿東西就是 get, 放東西就是 set. 怎么拿怎么放是它說(shuō)了算, 雖然你覺(jué)得好像就是直接拿直接放差不多.
GET SET 就是對(duì)外的接口 ,一般在實(shí)例中訪問(wèn)成員數(shù)據(jù)需要這個(gè)成員數(shù)據(jù)的訪問(wèn)方式為PUBLIC ,現(xiàn)在C#很高級(jí)了,GET 就是獲取,SET 就是設(shè)置,但是它提供了跟好的收縮性,對(duì)GET 和SET 可以單獨(dú)設(shè)置訪問(wèn)權(quán)限 比如你對(duì)某個(gè)成員數(shù)據(jù)只能讀取或者只寫,或者只有派生類可以訪問(wèn)等。。。 相對(duì)以前來(lái)說(shuō),沒(méi)有屬性訪問(wèn)器,需要通過(guò)函數(shù)來(lái)調(diào)用私有成員數(shù)據(jù),屬性提供了高效的訪問(wèn)模式和簡(jiǎn)單的書寫。
就是為了安全啊~
字段是你具體要操作的數(shù)據(jù)所以他的值不能出錯(cuò),可是你又不能避免用戶犯錯(cuò)
為了安全就用屬性來(lái)給字段賦值,因?yàn)?在set中你可以對(duì)數(shù)據(jù)的安全進(jìn)行驗(yàn)證,
get就更簡(jiǎn)單了驗(yàn)證完數(shù)據(jù)了就要把值給了字段所以要get
set的中文意思是“設(shè)置”;
get的中文意思是“獲得”;

補(bǔ)充:

get 和 set 會(huì)在相應(yīng)的時(shí)候自動(dòng)調(diào)用
主要是為了隱藏程序內(nèi)的數(shù)據(jù)結(jié)構(gòu)時(shí)用
get是獲取該屬性的值,
set設(shè)置該屬性的值。
在用set時(shí)有一個(gè)特殊的變量value
就是設(shè)置屬性時(shí)的值

value 隱式參數(shù),用于設(shè)置訪問(wèn)器以及添加或移除事件處理程序。

對(duì)類的屬性進(jìn)行 設(shè)置
比如用類名.屬性=“”賦值 set作用
變量=類名.屬性 取值 get 作用

完整代碼示例

如果value<0,則定義radius=0,否則,將value賦值給radius屬性

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace test {class Program{static void Main(string[] args){Circle circle = new Circle();circle.Radius = -1;Console.WriteLine("Radius is " + circle.Radius);//這樣使用}}class Circle{const double pi = 3.1415;private double radius;public double Radius//這樣定義{get => radius;set{if (value < 0) radius = 0;else radius = value;}}} }

還可以改成這樣(注意帶底色的字)

超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的C# 对get和set的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。