值型別和引用型別及其它

2021-09-06 05:36:38 字數 1943 閱讀 3102

值型別和引用型別及其它

圖一、結構和類不一樣的地方

如果是結構,在結構中寫建構函式,那麼必須要把結構中的字段完全賦值,否則報錯。

圖二、兩種不同的型別

舉例:結構版的person的賦值與類版的person的賦值

int、decimal、bool、double、byte、列舉、結構等型別(值型別)是傳遞拷貝;物件(引用型別)則是傳遞引用。

方法間物件string 引用型別  陣列 類

圖三、兩種不同型別的又乙個反應

圖四、關於繼承

繼承的符號:

利用繼承實現student類和teacher類繼承自person類。

student類和teacher類繼承父類的屬性和方法。

student類和teacher類還有自己獨有的屬性和方法。

在c#中,所有的類都直接或間接的繼承自了object類。(當我們定義乙個類的時候,如果沒有寫:繼承乙個類,那麼這個類就繼承了object類)

圖五、通過base關鍵字可以呼叫父類那個有參的建構函式

圖六、**的簡寫問題

對上面一段內容的總結:

如果 父類不寫任何的建構函式

子類 也不寫建構函式

子類會呼叫父類的那個預設的無引數的建構函式

如果子類寫了建構函式,父類也寫了乙個有引數的建構函式,那麼 因為子類呼叫父類預設無引數的建構函式,所以,這個時候會報錯。

腫麼辦?

第一可以在父類中寫乙個無引數的建構函式 就可以了

要麼可以通過base關鍵字,這樣就可以呼叫父類的有引數的建構函式,也能呼叫無引數的建構函式

protected

protected 訪問修飾符不允許其他非子類訪問 

新增內容:看懂了下面這幅圖的話,基本上就能理解上面這句話的意思了。注意:下面的**是寫在一起的。

圖七、protected

is用的時候 返回的是 bool型別  能轉換 返回是true 不能轉換 返回的是false

as 用的時候 返回的是 直接轉換的那個類的物件,如果能轉換 就直接轉了。如果轉換不了,返回的是空

c#基礎教程(完全免費,獻給**愛好者的最好禮物。注:本 作者分享自己精心整理的c#基礎教程,無任何商業目的。希望與 更多的**愛好者交流心得,也請高手多多指點!!!)

面向過程

三種迴圈的比較

c#中的方法(上)

我們常見的陣列

物件導向

思想的轉變

c#中超級好用的類

c#中析構函式和命名空間的妙用

c#中超級好用的字串

c#中如何快速處理字串

gdi+

這些年我收集的gdi+**

這些年我收集的gdi+**2

html概述

你不能忽視的html語言

你不能忽視的html語言2精編篇

你不能忽視的html語言3

引用型別和值型別

c 是一種型別安全的語言。每乙個變數都要求定義為乙個特定的型別,並且要求儲存在變數中的值只能是這種型別的值。變數既能儲存值型別,也可以儲存引用型別,還可以是指標。這一課將講述前兩種型別,關於指標的討論我們將在下一課中進行。下面是關於值型別和引用型別不同點的概論 如果乙個變數v儲存的是值型別,則它直接...

引用型別和值型別

c 中值型別和引用型別作為方法引數傳遞的時候其實都可以說是 值 的傳遞,只不過這裡的 值 指代的東西有所區別。當方法的引數為值型別時,方法傳遞的是值本身的值。當方法的引數為引用型別時,方法傳遞的則是應用型別的引用的位址,也就是引用型別位址在棧上的值。舉個引用型別作為引數傳遞的例子 static vo...

值型別和引用型別

為了更好地說明兩種型別之間的區別,借用如下的 來說明 值型別引用型別 記憶體分配地點 分配在棧中 分配在堆中 效率效率高,不需要位址轉換 效率低,需要進行位址轉換 記憶體 使用完後,立即 使用完後,不是立即 等待gc 賦值操作 進行複製,建立乙個同值新物件 只是對原有物件的引用 函式引數與返回值 是...