国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

[C#]體會一下什么叫做強類型

2024-07-21 02:27:15
字體:
來源:轉載
供稿:網友
首先聲明,這篇文章僅僅是個人的學習體會,并不是標準資料。如果有什么謬誤,歡迎高手指出。

object o1 = new object();
string s1 = o1.tostring();    // s1 will be "system.object"

object o2 = "hello";
string s2 = o2.tostring();    // s2 will be "hello"

這和c++很不相同。在c++里面,o2.tostring()會調用object的tostring()方法,而不是string的tostring()方法。o2是對靜態string對象"hello"的一個引用,則o2雖然在語法上寫成了object類型,但它代表的是在內存里的一個string對象。當程序試圖通過o2來調用tostring()方法的時候,系統首先要在內存里面找到o2所代表的對象,然后在這個對象的函數表中找到合適的方法來執行。o2代表的是一個string對象,而string類型已經重載過tostring()方法,在o2所代表的string對象的函數表里立刻就找到了tostring()方法,因此string類型的tostring()方法就被調用了。
這就是基于運行時的強類型。

具體到實現上的區別:
c++被編譯成匯編,調用是 jmp [address in memory],直接跳轉。
c#被編譯成il,調用是callvirt classname.functionname,需要經過runtime的翻譯。雖然最終也是要jmp到某個地址去執行的,但是跳轉的這個地址,卻是由runtime在運行的時候根據classname.functionname和classinstance address計算出來的。
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 岳阳市| 峨眉山市| 邯郸县| 蕲春县| 永清县| 高雄市| 隆安县| 家居| 临朐县| 鞍山市| 昌平区| 大同市| 呼伦贝尔市| 永春县| 蓬莱市| 霍邱县| 迁西县| 南部县| 平度市| 神农架林区| 常宁市| 琼中| 应城市| 法库县| 大余县| 伊宁市| 富锦市| 莱州市| 湖口县| 都兰县| 江门市| 杂多县| 巨鹿县| 乳山市| 西吉县| 中山市| 江华| 嘉祥县| 永寿县| 平江县| 宁安市|