亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請看如下圖片內容,求問在C# 中的屬性的意義!

請看如下圖片內容,求問在C# 中的屬性的意義!

慕工程0101907 2021-11-19 15:11:29
我知道的是,屬性是為了封裝可是,有時候屬性設置為private int a;public int A{ get{return this.a} set{this.a = value} }這樣的情況使用屬性來封裝有什么意義嗎?為什么不直接寫public int a;屬性還可簡寫為public int A {get;set;} 這樣的情況我也想問上面的問題另外屬性可以設置只讀和只寫,如果這樣設置的話...例如public int A{get;}這樣的屬性如何給它賦值呢?即使在類的內部也不可以(至少我還不知道)一個從來不能被賦值的屬性又有何意義呢?屬性限制字段的合理性這個我也了解的但我看的書里很多時候在屬性里沒有對字段做任何特殊處理,讓人很迷惑還有就是上面圖片里的問題,這樣寫在構造里也是不能賦值的
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

因為你定義的字段是不希望“別人”看見的,所以設置為私有的,但是方法卻是可以公用的。此外,一般情況下只會對屬性設置可讀,限制為可寫的還真沒見過。這樣也是為了安全性考慮。

查看完整回答
反對 回復 2021-11-24
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

當為A賦值時內部的b變量也要改變時,用屬性這個方法是最好不過的了。

12int a;int b;public int A { getreturn this.a; } setthis.a = value; this.b = value + 1; } }

當然,public int A也是可以的,只是賦值和取值都只會取本身的值不會去改變其他的東西。


public int A { getset; }

在net frmaework 2.0里是不支持的。


public int A { get; }

這種編譯器都把它看作是ReadOnly了,無法直接賦值,但你可以進行反射或者在構建函數里改目標值:


public class ABC : Form {    int a = 5; //直接賦值    public int A { getreturn a; } } //如果沒有構建函數,那么會返回默認值5    public ABC() { //構建函數        a = 10; //構建函數之后,再調用A會返回a的值10    }}

【對于public int A{get;}這種就只能用反射了?!烤秃孟褚粋€類(球),它有個屬性Type(類型)是"圓",這時你改成"正方形"就好像不對頭尾了吧,本來是"球"的類,還配對"正方形",這時你就需要不讓用戶修改這個值(ReadOnly),一直保持是"圓"。



查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 443 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號