C#中的字段與屬性詳解.NET中的字段與屬性詳解_1-創(chuàng)新互聯(lián)

一個類中需要有描述這個類信息的數(shù)據(jù),而存儲這些數(shù)據(jù)的變量就成為字段。

成都創(chuàng)新互聯(lián)公司于2013年成立,先為陽原等服務(wù)建站,陽原等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為陽原企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

字段默認(rèn)的訪問級別為private(只有本類可以直接訪問),我們將其訪問級別改為public,在其他類中就可以訪問了。

字段和屬性表示對象包含的信息,字段類似于變量,因為可以直接讀取或設(shè)置他們。

屬性是對字段的封裝。屬性可以對字段的訪問進行控制,可以進行非法設(shè)置值的判斷。屬性并不存儲數(shù)據(jù),字段存儲數(shù)據(jù)。

封裝后,有一些字段我只能賦值,不能讀取,有些只能讀取,不能賦值,而且可以對傳過來的值進行選擇。

建議所有的字段不要寫成public級別,為字段設(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)訪問級別為 private(只能在本類中調(diào)用)
        //public string Name       //屬性  對字段_name進行封裝
        //{
        //    get
        //    {
        //        return _name;
        //    }
        //    set
        //    {
        //        _name = value;
        //    }
        //}

        public string Name    //這是自動實現(xiàn)的屬性 方便快捷生成屬性 相當(dāng)于以上注釋的代碼
        {
            get;              //當(dāng)寫自動實現(xiàn)的屬性時,get和set兩個都不能省
            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;         //字段 性別  訪問級別為public 在其他類中可以直接訪問


        private DateTime birthdate;
        //字段 生日 該字段的訪問級別為private,我要想在其他類中使用該字段,只好使用方法

        public DateTime GetBirthdate()   //這里的方法相當(dāng)于屬性中的get
        {
            return birthdate;
        }

        public void SetBirthdate(DateTime value)   //這里的方法相當(dāng)于屬性中的set
        {
            birthdate = value;
        }

        //所謂屬性就是綁定了字段的兩個方法
        //當(dāng)我們在屬性中不寫 get訪問體時,該字段就是只寫,不寫set訪問體時,該字段就是只讀。
    }
}

慣用法:屬性開頭字母大寫,字段開頭字母小寫。

選中字段 不論是public int age; 或者是private int age; 都可以。選中后按快捷鍵 ctrl+r,e 彈出封裝字段窗口,改改屬性名稱即可。

 或是選中字段后,鼠標(biāo)右鍵選擇重構(gòu),選擇封裝字段,改改屬性名稱即可。

C#中的字段與屬性詳解 .NET中的字段與屬性詳解_1

C#中的字段與屬性詳解 .NET中的字段與屬性詳解_1

.net3.0之后就有了屬性的簡寫方式

public string Name { get; set; }

//編譯器自動幫我們生成私有字段和set get代碼段

//自動實現(xiàn)的屬性,get和set都不能省略

//只讀屬性 public string Name{ get; private set;}

//只寫屬性 public string Name{ private get; set;}

輸入prop  +  再兩下tab鍵  會出現(xiàn)屬性的格式,改改返回值,屬性名稱就可以了。

 C#中的字段與屬性詳解 .NET中的字段與屬性詳解_1

按下兩下Tab鍵之后

C#中的字段與屬性詳解 .NET中的字段與屬性詳解_1

只需要改改返回值,屬性名稱就好了。

 public string Name { get; set; }   //等同于下面的代碼


private string name;

public string Name

{

  set{ this.name = value;}

  get{ return this.name;}

}

自動實現(xiàn)的屬性,自動實現(xiàn)了屬性的訪問器,快速生成屬性。

當(dāng)屬性只需要單純的讀寫訪問時使用。另外,有些特別屬性也可以快速實現(xiàn):

只讀屬性:publicstring Str{ get; private set;}

只寫屬性:publicstring Str{ private get; set;}

當(dāng)屬性是派生屬性或者要做訪問控制或需要控制非法值的時候,就不能如此使用了。這個時候需要自己實現(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
        {
           //提示錯誤
        }
    }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標(biāo)題:C#中的字段與屬性詳解.NET中的字段與屬性詳解_1-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://muchs.cn/article14/cdjsge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、軟件開發(fā)、響應(yīng)式網(wǎng)站靜態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營