亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

神奇的decimal,也許面試會問到哦~

2019-11-14 16:25:43
字體:
來源:轉載
供稿:網友

 

  這段時間忙的像狗一樣,寫博客的事情也就耽擱了,繼續扯,為什么說decimal神奇呢,大家都知道decimal是基元類型,但是

這個decimal類型在IL中居然沒有相應的IL指令,也就是說CLR根本不認識decimal,全是編譯器這一層在糊弄我們。

     話不多說,看下最simple的例子,(加了點注釋方便理解)

 1         static void Main(string[] args) 2         { 3             //居然調用了有參構造函數 4             decimal d = 1; 5  6             //直接將常量10推送到計算堆棧,然后將10放入局部變量索引為1的位置,也就是i 7             int i = 10; 8  9             //居然調用了隱式轉換操作符,IL中就是調用相應的方法10             d = i;11 12             //居然調用了顯式轉換操作符,IL中就是調用相應的方法13             i = (int)d;14         }

 

從IL中可以看到,對decimal的所有操作最后玩的都是方法,對編譯器上層的我們而言卻一無所知,那么下一個問題來了,這些

都是怎么做到的呢?

 

一:decimal源代碼

當我們對decimal的實現充滿好奇心的時候,最滿足的方式的就是看源代碼了,大家應該都有對新鮮事物的好奇心,不管看不看

得懂都得裝X看。

1:implicit/explicit 操作符

    從下面的IL中我們看到了這些亂七八槽的操作符,可能我們用的比較少或者有些人都沒看過,不過終有它的用武之地。

 

結合上面的IL代碼,我們發現了implicit和explicit關鍵字,這兩個就是所謂的轉換操作符,顧名思義,implicit就是所謂的隱式轉換

操作符,explicit是顯式轉換了,再結合上面的IL代碼,我們會發現給我們最終生成的是op_Implicit 和 op_Explicit方法。

可能有些人看不明白了,那我就舉個例子吧。

 1     public class PRogram 2     { 3         static void Main(string[] args) 4         { 5             //這里就是語法糖,c=10 最終調用的就是:隱式轉換調用 6             Complex c = 10; 7  8             //語法糖,(int)最終調用的是:顯式轉換調用 9             int j = (int)c;10         }11     }12 13     public struct Complex14     {15         public Complex(int num) { }16 17         /// <summary>18         /// 隱式轉換調用的方法19         /// </summary>20         /// <param name="value"></param>21         /// <returns></returns>22         public static implicit Operator Complex(int value)23         {24             return new Complex(value);25         }26 27         /// <summary>28         /// 強制轉換調用的方法29         /// </summary>30         /// <param name="value"></param>31         /// <returns></returns>32         public static explicit operator int(Complex value)33         {34             return Convert.ToInt32(value);35         }36     }

從我的sample和IL中看,我想你應該清楚了,為了方便我們編碼效率以及更好的讓人理解,C#提供了這么個好玩的語法糖,清晰明了。

 

2:op_*** 重載操作符

    既然是基元類型就避免不了大量的算術運算和比較元算,那這些decimal又是如何做到的?還是繼續在源代碼里面找找。

 

   從源代碼里面可以看到,原來C#用operator重載運算符對我們這個++,--,!=,<= 進行了重載,和轉換運算符一樣,最終

在IL層也是轉換為各種方法。

   還是看個例子:

 1         static void Main(string[] args) 2         { 3             decimal i = 10; 4  5             decimal j = 12; 6  7             var r1 = i > j; 8  9             var r2 = i == j;10         }

 

好了,我想你一切都清楚了,當我們在愉快的寫著++,--的時候,殊不知編譯器給我們做的太多太多,最后得要感謝一下編譯器。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲国产日韩2020| 2020欧美日韩在线视频| 精品国产电影一区| 国产一区二区三区在线播放免费观看| 国产一区二区三区四区福利| 国产日韩精品在线| 久久久久久高潮国产精品视| 国产欧美日韩精品丝袜高跟鞋| 91成人免费观看网站| 国产欧美日韩中文字幕在线| 欧美日韩在线视频首页| 国产亚洲精品激情久久| 亚洲精品wwww| 国产深夜精品福利| 成人av色在线观看| 欧美在线视频免费播放| 91久久久久久久久久| 中文字幕在线看视频国产欧美| 青青草国产精品一区二区| 日韩成人在线网站| 亚洲成人免费在线视频| 亚洲视频在线观看视频| 精品国产乱码久久久久久虫虫漫画| 26uuu另类亚洲欧美日本一| 66m—66摸成人免费视频| 亚洲大胆人体视频| 久久影院免费观看| 成人激情视频免费在线| 欧美亚洲成人精品| 97在线看免费观看视频在线观看| 免费91麻豆精品国产自产在线观看| 亚洲电影免费观看高清完整版在线| 伊人av综合网| 欧美视频二区36p| 国产啪精品视频网站| 亚洲一区二区三区成人在线视频精品| 精品国产乱码久久久久久虫虫漫画| 亚洲电影免费观看| 久久久久久久久中文字幕| 亚洲精品白浆高清久久久久久| 日韩国产在线看| 欧美猛交免费看| 日韩精品中文字幕在线播放| 亚洲网站在线观看| 91久久国产精品91久久性色| 亚洲欧美精品一区| 日韩中文字幕久久| 日韩高清欧美高清| 国产97在线|亚洲| 91精品国产综合久久久久久久久| 亚洲视频第一页| 国产欧美日韩高清| 亚洲已满18点击进入在线看片| 国产亚洲成精品久久| 91精品免费久久久久久久久| 国产精品爽爽ⅴa在线观看| 伦伦影院午夜日韩欧美限制| 福利视频一区二区| 亚洲黄色av网站| 538国产精品一区二区免费视频| 精品国产一区二区三区久久| 欧美午夜精品久久久久久浪潮| 国产精品第3页| 亚洲第一综合天堂另类专| 成人性生交大片免费观看嘿嘿视频| 高清视频欧美一级| 91精品国产91久久久久久久久| 亚洲午夜未删减在线观看| 欧美日韩中文字幕在线| 狠狠久久五月精品中文字幕| 久久久电影免费观看完整版| 欧美视频在线观看免费网址| 97超碰蝌蚪网人人做人人爽| 国产精品99久久久久久久久| 91精品国产91| 久久久亚洲影院| 精品偷拍各种wc美女嘘嘘| 在线播放国产精品| 欧美成人一二三| 欧美在线视频网| 久久久国产一区| 亚洲欧美日韩一区二区在线| 日韩av电影在线免费播放| 欧美亚洲一级片| 亚洲电影在线看| 国产女人18毛片水18精品| 欧美福利视频在线| 久久成人一区二区| 欧美一区二区.| 国产mv久久久| 精品国产拍在线观看| 欧美精品少妇videofree| 日韩高清a**址| 中文字幕国产精品久久| 亚洲国产精彩中文乱码av| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲欧美一区二区三区久久| 国产欧美中文字幕| 国产精品免费一区| 国产精品夜间视频香蕉| 成人黄色在线免费| 国产精品亚洲第一区| 88国产精品欧美一区二区三区| 亚洲美女自拍视频| 亚洲精品日韩久久久| 中文字幕亚洲专区| 亚洲日本欧美日韩高观看| 亚洲91精品在线| 亚洲一区中文字幕| 欧美国产第二页| www.午夜精品| 久久九九精品99国产精品| 欧美日韩另类在线| 亚洲图片欧洲图片av| 欧美天堂在线观看| 97超视频免费观看| 中文字幕在线视频日韩| 亚洲第一中文字幕在线观看| 亚洲午夜国产成人av电影男同| 午夜精品久久久久久久男人的天堂| 日韩欧美综合在线视频| 亚洲人成伊人成综合网久久久| 亚洲黄色在线看| 亚洲国产精品久久久久| 国产成一区二区| 久久夜精品香蕉| 97色在线播放视频| 国产精品国产福利国产秒拍| 国产精品你懂得| 国产欧美日韩免费| 国产综合视频在线观看| 日本精品视频网站| 国产精品视频午夜| 成人在线国产精品| 欧美人在线视频| 国产一区二区三区久久精品| 97视频在线播放| 一本色道久久综合亚洲精品小说| 国产在线观看精品一区二区三区| 国产91色在线|| 在线观看欧美日韩国产| 欧美一区二区三区四区在线| 一本一道久久a久久精品逆3p| 人人爽久久涩噜噜噜网站| 欧美黄色片免费观看| 少妇高潮 亚洲精品| 成人免费看黄网站| 欧美中文字幕精品| 精品一区二区三区四区在线| 亚洲欧美国产va在线影院| 九色成人免费视频| 中文字幕免费精品一区| 久久久亚洲精品视频| 日韩av在线看| 好吊成人免视频| 欧美电影免费观看高清完整| 国产啪精品视频网站| 成人黄色短视频在线观看| 成人黄在线观看| 国产日韩欧美成人| 91免费精品视频| 日韩在线欧美在线| 日韩成人在线电影网| 国产香蕉97碰碰久久人人|