天天看點

《你必須知道的.net》讀書筆記 001——1.1 對象的旅行

    好久沒看書了,上次看書的時候還是一年前了,一個偶然的機會,比較系統的看了一下OO的基礎,封裝、繼承、多态等,當時真的是很不會,看了也是一知半解,迷迷糊糊的。在實際中的項目裡也沒敢一下子應用OO,還是用自己比較拿手的面向過程來應對項目,然後一點一點使用OO的技巧來代替一部分的代碼(或者叫做功能)。

    應為是使用C#來編寫程式,是以多了解一下OO的特點和技巧,對寫程式是有很大的幫助的。anytao寫的這本書,感覺可以解決一些我心裡的一些迷惑的地方吧。

    讀了不能白讀,寫點讀後感吧,一是記錄一下書裡面的知識點,好像上課的時候的筆記,另一個就是寫點自己的感想,怪不得上了年紀的人就喜歡唠叨。

    重頭開始。

    第一部分 淵源 .NET與面向對象 

     “在.net世界裡,一切都是對象。面向對象思想的掌握是深入了解.net技術的必修課,.net Framework的高樓大廈中,是什麼支撐着各個複雜度的系統互相有效地協作,請面向對象這問設計師告訴大家。”好了,不多寫了,有抄書的嫌疑。

    以前看一些文章,什麼鴨子了,電飯鍋了,都看不懂,看代碼裡面都是抽象類了,接口了,就是一頭霧水。程式裡哪裡來的鴨子呀,電飯鍋呀,鴨子.speak()。鴨子就叫了,那麼是怎麼叫得呢?

function speak()

{

    write("鴨子叫");

}

    這樣鴨子就叫了,暈呀。這個,我寫這個,程式就運作起來了?資料就跑到資料庫裡面了嗎?其實這些文章都是在講如何設計(思想),而不是在講如何具體的編碼。看了多了,才能有一點點的了解。

    再說代碼,下了一個demo,打開之後,看到一個函數,右鍵,檢視定義。轉到了接口的定義,那麼實作在哪裡呢?找不到。也就沒有興趣再往下看了。

    學了OO,又嘗試着自己寫了幾段代碼之後才慢慢了解了一點。

    1.1對象的旅行

    對象的類型,按照對象運作時在記憶體中的位置分為兩類:值類型和引用類型。

    值類型位于線程的堆棧;引用類型位于托管堆。

    大學的時候就沒有弄清楚棧和堆的區分,現在也隻是有個大概的印象,好像棧有一個先進先出、先進後出的,而堆就沒有這些了。總之還是比較迷糊的。

    書上說,值類型和引用類型的角色會發生轉變,産生了裝想和拆箱。我覺得應該是

    值類型 —— 裝箱 ——變成了引用類型 —— 拆箱 —— 變回了值類型。(當然具體都做了些什麼還是不太清楚)

    而這樣的是不存在的吧 ,引用類型 —— 拆箱 —— 變成了值類型 —— 裝箱 —— 變回了引用類型。好像按照書上的例子會産生奇異。(也許是我的想法太怪了吧)

    其他的就不說了,通路修飾符嘛,我隻用三個,private、protected、public,其他的基本不用。具體的解釋和我的想法是相反的,可能是觀看的角度不一樣吧。

    我的看法:

    public ,共有的,誰都可以通路、調用,就好像員工,來一個上司就可以“調用”一下,給分點活幹。

    private ,私有的,類外面是不能調用的,誰敢管上司呀。

    屬于開玩笑了。另外發現了一個小錯誤,第五頁,表 1-1 通路修改符。而下面是“通路修飾符”。