一個類中需要有描述這個類信息的數據,而存儲這些數據的變量就成為字段。
成都創新互聯公司于2013年成立,先為陽原等服務建站,陽原等地企業,進行企業商務咨詢服務。為陽原企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。字段默認的訪問級別為private(只有本類可以直接訪問),我們將其訪問級別改為public,在其他類中就可以訪問了。
字段和屬性表示對象包含的信息,字段類似于變量,因為可以直接讀取或設置他們。
屬性是對字段的封裝。屬性可以對字段的訪問進行控制,可以進行非法設置值的判斷。屬性并不存儲數據,字段存儲數據。
封裝后,有一些字段我只能賦值,不能讀取,有些只能讀取,不能賦值,而且可以對傳過來的值進行選擇。
建議所有的字段不要寫成public級別,為字段設置屬性,符合面向對象封裝的原則。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 屬性 { class Program { static void Main(string[] args) { } } class Person { //string _name; //字段 姓名 字段的默認訪問級別為 private(只能在本類中調用) //public string Name //屬性 對字段_name進行封裝 //{ // get // { // return _name; // } // set // { // _name = value; // } //} public string Name //這是自動實現的屬性 方便快捷生成屬性 相當于以上注釋的代碼 { get; //當寫自動實現的屬性時,get和set兩個都不能省 set; } private int _age; //字段 年齡 public int Age //屬性 { get { return _age; } set { if (value < 0) //年齡是大于0的 { _age = 18; //如果用戶使用非法值,將年齡默認設置為18歲 } else { _age = value; } } } public char Gender; //字段 性別 訪問級別為public 在其他類中可以直接訪問 private DateTime birthdate; //字段 生日 該字段的訪問級別為private,我要想在其他類中使用該字段,只好使用方法 public DateTime GetBirthdate() //這里的方法相當于屬性中的get { return birthdate; } public void SetBirthdate(DateTime value) //這里的方法相當于屬性中的set { birthdate = value; } //所謂屬性就是綁定了字段的兩個方法 //當我們在屬性中不寫 get訪問體時,該字段就是只寫,不寫set訪問體時,該字段就是只讀。 } }
慣用法:屬性開頭字母大寫,字段開頭字母小寫。
選中字段 不論是public int age; 或者是private int age; 都可以。選中后按快捷鍵 ctrl+r,e 彈出封裝字段窗口,改改屬性名稱即可。
或是選中字段后,鼠標右鍵選擇重構,選擇封裝字段,改改屬性名稱即可。
.net3.0之后就有了屬性的簡寫方式
public string Name { get; set; }
//編譯器自動幫我們生成私有字段和set get代碼段
//自動實現的屬性,get和set都不能省略
//只讀屬性 public string Name{ get; private set;}
//只寫屬性 public string Name{ private get; set;}
輸入prop + 再兩下tab鍵 會出現屬性的格式,改改返回值,屬性名稱就可以了。
按下兩下Tab鍵之后
只需要改改返回值,屬性名稱就好了。
public string Name { get; set; } //等同于下面的代碼
private string name;
public string Name
{
set{ this.name = value;}
get{ return this.name;}
}
自動實現的屬性,自動實現了屬性的訪問器,快速生成屬性。
當屬性只需要單純的讀寫訪問時使用。另外,有些特別屬性也可以快速實現:
只讀屬性:publicstring Str{ get; private set;}
只寫屬性:publicstring Str{ private get; set;}
當屬性是派生屬性或者要做訪問控制或需要控制非法值的時候,就不能如此使用了。這個時候需要自己實現訪問器:
private int _salary; public int Salary { get { //工資不可以隨便給別人看,得有權限 if(Authorization.Check(visitor)) return _salary; throw new NotAuthorizeException(); } set { //工資是大于零的 if(value > 0) { _salary = value; } else { //提示錯誤 } } }
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:C#中的字段與屬性詳解.NET中的字段與屬性詳解_1-創新互聯
網頁路徑:http://vcdvsql.cn/article14/cdjsge.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、企業網站制作、軟件開發、響應式網站、靜態網站、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯