您好,登錄后才能下訂單哦!
小編給大家分享一下c#類中字段、行為和屬性的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
一、c#的值類型和引用類型
1、值類型有:結構體(數值類型,如int之類;bool型,用戶定義的結構體),枚舉類型,可控類型。值類型存在棧上。
2、引用類型:數組,用戶定義的類,接口,委托,object,字符串。引用類型存在堆上。
(內存塊分為棧,堆,靜態存儲區)
3、幾點說明:
(1)結構體中即使包含了引用類型的成員,也依然是值類型。
(2)數組的元素,不管是引用類型的還是值類型的,都存在托管堆上。
(3)值類型總是分配在申明它的地方,作為字段時,跟隨其所屬的變量(實例)存儲,作為局部變量時存儲在棧上。
(4)值類型在內存管理上具有更好的效率,并且不支持多態,適合做存儲內型載體;引用類型支持多態,適合用于定義應用程序的行為。
二、c#類的訪問控制:
public ,protect ,private ,internal,protect internal
public 公共的,任何其他的對象都能訪問,子類繼承了,其他對象子類該屬性的訪問性由子類的訪問性決定
protect 受保護的,子類能繼承,其他類不能直接訪問
private,子類繼承了,但是子類里面是不可訪問的,其他對象也不能訪問
internal,是說在同一個程序集中可以訪問
protect internal同一個程序集內部的子類可以繼承,其他類不能訪問
系統默認是私有的。
三、類的字段,方法,和屬性
類是面向對象編程的基本單位,類的成員包括事件、字段、嵌套類型、方法和屬性。作為初學者,我們首先得了解類的成員中的字段,方法和屬性。
1、類的字段。類的字段準確地說應該是類的數據成員,其定義是:用于存儲類和類的實例相關數據的變量。
2、類的方法。方法也稱行為,是類的函數成員,是一個為實現類的某一個特定功能的函數。
3、類的屬性。所謂“屬性”,很大程度可以看作是對“字段”的一種封裝,它利用一種被稱為“get/set訪問器”分別控制對字段的讀寫操作,并暴露一個屬性值。
下面我們舉一個例子來說明屬性的作用。
Class Student
{
//數據成員或者字段的定義
public string name ;
private string accnumber;//這里,我們本來把學生的帳號定義為私有
//的,是不能被繼承和訪問的。
//屬性的定義
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就是設值。在set里,我們還可以加一些限制、選擇條件什么的,比如if(value.Length==4){accnumber = value};
字段是一個用于存儲數據的變量,屬性是一個方法或者說是一個函數成員。那么既然屬性是一個方法,那么他和方法的區別是什么呢?從定義就可以看出來,屬性其實本身就是方法。但既然把屬性和方法定義成為兩個概念,那么他們之間肯定有不同地地方。個人感覺,他們最大的區別首先是屬性沒有參數列表,而方法必須要有參數列表,哪怕沒有參數,也要放一個空括號在那。其次,屬性定義里要有set和get兩個訪問器,用于獲得屬性的值和設定屬性的值其余的地方沒有發現不同之處,屬性里也可以判定數據的合法性,和方法沒有什么兩樣。
看完了這篇文章,相信你對“c#類中字段、行為和屬性的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。