在VBA中,Long和Object數據類型都是4字節,這是內存地址的大小。這是否意味着,在技術上,Object數據類型不能執行Long無法做到的任何事情?如果是的話,那麼可以肯定地說,Object數據類型的存在只是爲了讓程序員更容易區分變量的目的嗎?VBA中Long和Object數據類型之間的區別
這個問題出現了,因爲我正在考慮Win32 API函數聲明。他們經常被宣佈爲Long,並且,除非我誤認爲,他們的返回值只是一個內存地址。似乎像定義這些函數一樣,那麼Object就更合適了。
我完全沒有?提前致謝。
「對象」隱藏了大量的底層複雜性,其底層4字節指針必須指向COM對象vTable/IDispatch - 您無法爲其分配任何其他地址並期望它可以正常工作。 –
我不知道它只能指向COM對象。那麼,這對Win32 API函數有何說法?如果它們返回COM指針,那麼爲什麼它們不被聲明爲Object而不是Long? – cadsharp
大多數使用COM的Win32都是直接使用COM接口實現的,而不是作爲導出的函數實現的,理論上我假設如果你發現一個返回這樣的實例(例如COM的CoCreateInstance的最後一個參數),你可以將參數'as Object' –