溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

c#類中字段、行為和屬性的示例分析

發(fā)布時間:2021-11-24 14:48:23 來源:億速云 閱讀:241 作者:小新 欄目:編程語言

小編給大家分享一下c#類中字段、行為和屬性的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、c#的值類型和引用類型

    1、值類型有:結(jié)構(gòu)體(數(shù)值類型,如int之類;bool型,用戶定義的結(jié)構(gòu)體),枚舉類型,可控類型。值類型存在棧上。

    2、引用類型:數(shù)組,用戶定義的類,接口,委托,object,字符串。引用類型存在堆上。

(內(nèi)存塊分為棧,堆,靜態(tài)存儲區(qū))

    3、幾點說明:

        (1)結(jié)構(gòu)體中即使包含了引用類型的成員,也依然是值類型。

        (2)數(shù)組的元素,不管是引用類型的還是值類型的,都存在托管堆上。

        (3)值類型總是分配在申明它的地方,作為字段時,跟隨其所屬的變量(實例)存儲,作為局部變量時存儲在棧上。

        (4)值類型在內(nèi)存管理上具有更好的效率,并且不支持多態(tài),適合做存儲內(nèi)型載體;引用類型支持多態(tài),適合用于定義應(yīng)用程序的行為。

二、c#類的訪問控制:

    public ,protect ,private ,internal,protect internal
    public 公共的,任何其他的對象都能訪問,子類繼承了,其他對象子類該屬性的訪問性由子類的訪問性決定
    protect 受保護的,子類能繼承,其他類不能直接訪問
    private,子類繼承了,但是子類里面是不可訪問的,其他對象也不能訪問
    internal,是說在同一個程序集中可以訪問
    protect internal同一個程序集內(nèi)部的子類可以繼承,其他類不能訪問

系統(tǒng)默認是私有的。

三、類的字段,方法,和屬性

類是面向?qū)ο缶幊痰幕締挝?,類的成員包括事件、字段、嵌套類型、方法和屬性。作為初學(xué)者,我們首先得了解類的成員中的字段,方法和屬性。

1、類的字段。類的字段準確地說應(yīng)該是類的數(shù)據(jù)成員,其定義是:用于存儲類和類的實例相關(guān)數(shù)據(jù)的變量。

2、類的方法。方法也稱行為,是類的函數(shù)成員,是一個為實現(xiàn)類的某一個特定功能的函數(shù)。

3、類的屬性。所謂“屬性”,很大程度可以看作是對“字段”的一種封裝,它利用一種被稱為“get/set訪問器”分別控制對字段的讀寫操作,并暴露一個屬性值。

下面我們舉一個例子來說明屬性的作用。

Class Student

{

 //數(shù)據(jù)成員或者字段的定義
    public string name ;

private string accnumber;//這里,我們本來把學(xué)生的帳號定義為私有     

                         //的,是不能被繼承和訪問的。

//屬性的定義
    public string Accnumber

{                     

    Get                  

{                    

return name;      

Set                   

{

accnumber = value;

}

  }

...

        //這里,我們利用屬性,通過get訪問器,外界就可以讀到accumber的值;通過set訪問器,我們就可以給accumber賦新值。在子類和其他類中我們可以把Accnumber看作是accnumber的替身,如: Student std = std.Accnumber = “s001”,我們就成功的給accnumber賦了值“s001”。

當然屬性里不是get和set都要用的,當我只要讀accnumber的值而不要改變其值的時候,只要用get訪問器就可以了。以后我們會介紹readonly訪問修飾符,它控制變量只能被讀而不能被寫。

上面這個例子中,get就是取值,set就是設(shè)值。在set里,我們還可以加一些限制、選擇條件什么的,比如if(value.Length==4){accnumber = value};

        字段是一個用于存儲數(shù)據(jù)的變量,屬性是一個方法或者說是一個函數(shù)成員。那么既然屬性是一個方法,那么他和方法的區(qū)別是什么呢?從定義就可以看出來,屬性其實本身就是方法。但既然把屬性和方法定義成為兩個概念,那么他們之間肯定有不同地地方。個人感覺,他們最大的區(qū)別首先是屬性沒有參數(shù)列表,而方法必須要有參數(shù)列表,哪怕沒有參數(shù),也要放一個空括號在那。其次,屬性定義里要有set和get兩個訪問器,用于獲得屬性的值和設(shè)定屬性的值其余的地方?jīng)]有發(fā)現(xiàn)不同之處,屬性里也可以判定數(shù)據(jù)的合法性,和方法沒有什么兩樣。

看完了這篇文章,相信你對“c#類中字段、行為和屬性的示例分析”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI