none
關於物件類別模組 RRS feed

  • 問題

  • 下載了VB的幾個程序,看了后發現在一般模組中定義的Function和在物件類別模組中定義的Function形式沒什麼區別的,請問一般模組和物件類別模組具體的區別是什麽?在form中使用它們定義的Function等有沒有什麽不同之處(即使用的方法或者是使用的原因)?謝謝!

    2011年8月13日 上午 07:30

解答

  • 大致上有幾個不同點 (在類別中, 我們排除靜態成員的情形, 因為類別中的靜態成員行為很接近模組)

    1. 模組在整個記議體中只有一份副本, 而且不須在程式碼中使用建構就會產生; 而要由類別產生執行個體, 則必須經過建構的過程 (某些類別你會無法使用它的建構函式, 這是其它幾種狀況, 如抽像類別, 或是建構函式被設為私有的類別等等..), 而你每建構一次, 就會為此執行個體產生一份獨立的空間.

    2. 模組無法實做介面

    3. 定義於類別中的成員的存留期依存在其執行個體被建構的區域, 比方你在某個 Function 建構該執行個體, 等到這個Function 結束(除非你有將它傳出去), 否則該執行個體的生命週期也就結束了. 而模組成員的存留期確是在此程式的存留期間都會存在.

    4. 類別所產聲的執行個體的成員, 必須透過執行個體存取. 而模組的成員在其命名空間下的任何一個地方都可以存取 (也就是隱含共用, 用變數來解釋即標準模組的公用變數是有效的全域變數). 因隱含共用的關係, 在模組中無法使用Shared關鍵字.

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 夏蟬小飛 2011年8月14日 下午 11:51
    2011年8月14日 上午 04:34
    版主

所有回覆

  • 在一般Module宣告的成員會共用

    物件類別定義的成員,則要先new 物件才能使用


    Shadowと愉快なコード達


    2011年8月13日 上午 07:53
  • 大致上有幾個不同點 (在類別中, 我們排除靜態成員的情形, 因為類別中的靜態成員行為很接近模組)

    1. 模組在整個記議體中只有一份副本, 而且不須在程式碼中使用建構就會產生; 而要由類別產生執行個體, 則必須經過建構的過程 (某些類別你會無法使用它的建構函式, 這是其它幾種狀況, 如抽像類別, 或是建構函式被設為私有的類別等等..), 而你每建構一次, 就會為此執行個體產生一份獨立的空間.

    2. 模組無法實做介面

    3. 定義於類別中的成員的存留期依存在其執行個體被建構的區域, 比方你在某個 Function 建構該執行個體, 等到這個Function 結束(除非你有將它傳出去), 否則該執行個體的生命週期也就結束了. 而模組成員的存留期確是在此程式的存留期間都會存在.

    4. 類別所產聲的執行個體的成員, 必須透過執行個體存取. 而模組的成員在其命名空間下的任何一個地方都可以存取 (也就是隱含共用, 用變數來解釋即標準模組的公用變數是有效的全域變數). 因隱含共用的關係, 在模組中無法使用Shared關鍵字.

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 夏蟬小飛 2011年8月14日 下午 11:51
    2011年8月14日 上午 04:34
    版主
  • 谢谢回答!
    2011年8月14日 下午 11:51
  • 谢谢回答,很详细!
    2011年8月14日 下午 11:51