Re: [問題] 觀念請教 關於class
※ 引述《QQ29 (我愛阿蓉)》之銘言:
: 學習C#時
: 目前觀念上是 class內function宣告和實作 要在一起寫...
: 不過我在ValueType 這 class的檔案中發現
: public abstract class ValueType
: {
: protected ValueType();
: public override bool Equals(object obj);
: public override int GetHashCode();
: public override string ToString();
: }
: 都沒有去定義
: 三個問題想請問
: 1.這個ValueType似乎是最上層的class 給別人繼承的
: 為啥他的function都要灌上override而不是virtual
: 我自己照他這樣寫他都會跟我講沒有定義 而不會過
: 2.第二個問題就是既然他這樣寫 也看不出來他繼承了誰 為什麼可以override?
: 且為啥可以不用寫定義 ......
這兩個問題其實是同一個問題
原因很簡單,C#所有class,都會自動繼承System.Object這個class
而Equals,GetHashCode,跟ToString是定義在System.Object
至於為啥三個函式沒定義,因為你看到的不是原始檔,而是來自中繼資料
http://hi.baidu.com/sevenxue2008/blog/item/2adcc295c9355614d31b7082.html
這個連結你可以看一下,裡面有ValueType Class的定義
: 3.我以為ValueType是給所有value type繼承的
: 但是我寫int a; 跳進去int的class 發現是Int32, 他後面繼承了一堆interface卻沒有既
: 成ValueType
: 這是為什麼呢?
Int32其實是一個structure,在C#中,所有structure都是繼承自ValueType
這是compiler自動幫你做的繼承,所以你看定義看不到
: 目前書上也沒有特別對這些解釋 自己trace發現的問題
你可能書還沒看完,不然可能要換本書了,
因為任何class都會繼承System.Object是很重要的觀念,
幾乎任何一本講.NET(或任何使用.NET的語言)的書都應該要提到,
而且還應該繼續告訴你System.Object裡面這三個函式的用途以及改寫時機
如果你的書講.NET的觀念講比較少的話,最好再去找另一本來看
C#雖然很多語法跟C++很像,但是因為C#是純.NET語言,
很多東西其實是跟.NET的設計還有架構有關,不能直接用C++的觀念想
最好還是找本書從頭到尾把它看一遍比較保險
: 請教一下各位
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.228.253
※ 編輯: jhchou 來自: 61.217.228.253 (02/05 03:00)
推
02/05 08:53, , 1F
02/05 08:53, 1F
→
02/05 08:55, , 2F
02/05 08:55, 2F
→
02/05 09:28, , 3F
02/05 09:28, 3F
推
02/05 10:18, , 4F
02/05 10:18, 4F
→
02/05 12:36, , 5F
02/05 12:36, 5F
→
02/05 12:36, , 6F
02/05 12:36, 6F
→
02/05 12:36, , 7F
02/05 12:36, 7F
→
02/05 13:22, , 8F
02/05 13:22, 8F
討論串 (同標題文章)