一個(gè)類中需要有描述這個(gè)類信息的數(shù)據(jù),而存儲(chǔ)這些數(shù)據(jù)的變量就成為字段。
創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、重慶服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球數(shù)千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
字段默認(rèn)的訪問級(jí)別為private(只有本類可以直接訪問),我們將其訪問級(jí)別改為public,在其他類中就可以訪問了。
字段和屬性表示對(duì)象包含的信息,字段類似于變量,因?yàn)榭梢灾苯幼x取或設(shè)置他們。
屬性是對(duì)字段的封裝。屬性可以對(duì)字段的訪問進(jìn)行控制,可以進(jìn)行非法設(shè)置值的判斷。屬性并不存儲(chǔ)數(shù)據(jù),字段存儲(chǔ)數(shù)據(jù)。
封裝后,有一些字段我只能賦值,不能讀取,有些只能讀取,不能賦值,而且可以對(duì)傳過來的值進(jìn)行選擇。
建議所有的字段不要寫成public級(jí)別,為字段設(shè)置屬性,符合面向?qū)ο蠓庋b的原則。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 屬性 { class Program { static void Main(string[] args) { } } class Person { //string _name; //字段 姓名 字段的默認(rèn)訪問級(jí)別為 private(只能在本類中調(diào)用) //public string Name //屬性 對(duì)字段_name進(jìn)行封裝 //{ // get // { // return _name; // } // set // { // _name = value; // } //} public string Name //這是自動(dòng)實(shí)現(xiàn)的屬性 方便快捷生成屬性 相當(dāng)于以上注釋的代碼 { get; //當(dāng)寫自動(dòng)實(shí)現(xiàn)的屬性時(shí),get和set兩個(gè)都不能省 set; } private int _age; //字段 年齡 public int Age //屬性 { get { return _age; } set { if (value < 0) //年齡是大于0的 { _age = 18; //如果用戶使用非法值,將年齡默認(rèn)設(shè)置為18歲 } else { _age = value; } } } public char Gender; //字段 性別 訪問級(jí)別為public 在其他類中可以直接訪問 private DateTime birthdate; //字段 生日 該字段的訪問級(jí)別為private,我要想在其他類中使用該字段,只好使用方法 public DateTime GetBirthdate() //這里的方法相當(dāng)于屬性中的get { return birthdate; } public void SetBirthdate(DateTime value) //這里的方法相當(dāng)于屬性中的set { birthdate = value; } //所謂屬性就是綁定了字段的兩個(gè)方法 //當(dāng)我們?cè)趯傩灾胁粚?nbsp;get訪問體時(shí),該字段就是只寫,不寫set訪問體時(shí),該字段就是只讀。 } }
慣用法:屬性開頭字母大寫,字段開頭字母小寫。
選中字段 不論是public int age; 或者是private int age; 都可以。選中后按快捷鍵 ctrl+r,e 彈出封裝字段窗口,改改屬性名稱即可。
或是選中字段后,鼠標(biāo)右鍵選擇重構(gòu),選擇封裝字段,改改屬性名稱即可。
.net3.0之后就有了屬性的簡(jiǎn)寫方式
public string Name { get; set; }
//編譯器自動(dòng)幫我們生成私有字段和set get代碼段
//自動(dòng)實(shí)現(xiàn)的屬性,get和set都不能省略
//只讀屬性 public string Name{ get; private set;}
//只寫屬性 public string Name{ private get; set;}
輸入prop + 再兩下tab鍵 會(huì)出現(xiàn)屬性的格式,改改返回值,屬性名稱就可以了。
按下兩下Tab鍵之后
只需要改改返回值,屬性名稱就好了。
public string Name { get; set; } //等同于下面的代碼
private string name;
public string Name
{
set{ this.name = value;}
get{ return this.name;}
}
自動(dòng)實(shí)現(xiàn)的屬性,自動(dòng)實(shí)現(xiàn)了屬性的訪問器,快速生成屬性。
當(dāng)屬性只需要單純的讀寫訪問時(shí)使用。另外,有些特別屬性也可以快速實(shí)現(xiàn):
只讀屬性:publicstring Str{ get; private set;}
只寫屬性:publicstring Str{ private get; set;}
當(dāng)屬性是派生屬性或者要做訪問控制或需要控制非法值的時(shí)候,就不能如此使用了。這個(gè)時(shí)候需要自己實(shí)現(xiàn)訪問器:
private int _salary; public int Salary { get { //工資不可以隨便給別人看,得有權(quán)限 if(Authorization.Check(visitor)) return _salary; throw new NotAuthorizeException(); } set { //工資是大于零的 if(value > 0) { _salary = value; } else { //提示錯(cuò)誤 } } }
標(biāo)題名稱:C#中的字段與屬性詳解.NET中的字段與屬性詳解_1
分享鏈接:http://jinyejixie.com/article34/pshdse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、動(dòng)態(tài)網(wǎng)站、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站排名、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)