C 基礎知識點 黎克特制轉換 as is

2021-07-31 08:12:59 字數 2954 閱讀 9475

子類可以賦值給父類。(如果有乙個地方需要乙個父類作為引數,我們可以給乙個子類 )

如果父類中裝的是子類物件,那麼可以將這個父類強轉為子類物件。

建立幾個類幫助我們理解:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 高山黎克特制轉換

}///

/// 父類

///public

class person

}///

/// 學生類繼承 person

///public

class student : person

}///

/// 老師類繼承 person

///public

class teacher : person}}

1.子類可以賦值給父類

在測試類中輸入:

// 子類可以賦值給父類:如果有乙個地方需要乙個父類作為引數,我們可以給乙個子類代替

// 建立乙個子類物件

//student s = new student();

// 記憶體中就是把父類的引用 指向了 子類的物件。

//person p = s;

// 簡寫

person p = new student();

目的:如果有乙個地方是乙個父類作為引數,我們可以給乙個子類代替就是因為子類可以賦值給父類。

例如:

join();表示把指定的分隔符放到乙個陣列裡面去。

可以看出join(string separator,params object values);第二個引數是object型別的陣列,而object是一切型別的 父類。

string.join("|", new

string );

我們在這裡建立的是string陣列的物件,而這個陣列屬於object的子類。在這裡正好充分說明了子類可以賦值給父類。可以輸出檢視:

2.如果父類中裝的是子類物件,那麼可以將這個父類強轉為子類物件。

在測試類中輸入:

// 如果父類中裝的是子類物件,那麼可以將這個父類強轉為子類物件。

// 強轉

student ss = (student)p;

ss.studentsayhello();

console.readkey();

執行結果:

說明強轉成功。再將上面這段**改為:

teacher ss = (teacher)p;

ss.teachersayhello();

console.readkey();

執行結果:

這裡就會發生異常,強轉失敗,在上面**person p = new student();父類中裝的是student。這兩個強轉充分說明了如果父類中裝的是子類物件,那麼可以將這個父類強轉為子類物件。

那麼還有乙個問題,在黎克特制強轉時經常會拋異常,所以在我們黎克特制強轉時經常使用isas型別轉換。

將**改為一下:

//

is 表示 將 p 轉換為 teacher,如果能夠轉換將在這裡返回 true,否則為 false

if (p is teacher)

else

執行結果:

可以將上面**改為:

if (p is student)

else

執行結果:

將上面**注釋掉,寫入下面**:

// as 表示如果 p 能夠轉換 teacher 返回 teacher 物件,否則返回乙個 null 。

teacher t = p as teacher;

我們打個斷點可以看出:

返回了乙個 null。換成:

C 基礎概念 黎克特制轉換 as is

子類可以賦值給父類。如果有乙個地方需要乙個父類作為引數,我們可以給乙個子類 如果父類中裝的是子類物件,那麼可以將這個父類強轉為子類物件。using system using system.collections.generic using system.linq using system.text ...

C 基礎知識點

1.單行注釋 多用於給變數注釋 2.多行注釋 多用於大段文字注釋 3.文件注釋 多用於給類和方法注釋 只能以字母 或者 符號開頭。開頭暫時不要用,它們有自己特殊的意義 後面可以跟任意的字母數字下劃線 命名法 1 camelclass駝峰命名法 變數名首單詞的首字母小寫,其餘的每個單詞的首字母大寫eg...

C 基礎知識點

主要包含c 常用語句 語言特徵 物件導向程式設計基礎 集合和索引。c 常用語句 物件導向程式設計基礎 高階程式設計 多重介面實現,c 不允許多重類繼承,但c 允許多重介面實現,定義時基類必須在介面之前,如 public class mobile phone,iusb,ibluetooth publi...