• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 55  文章 - 15  trackbacks - 0
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

                  今天想把BlogReader的C++版本寫出來,當然是照著MSDN上微軟的官方文檔來做了,中間邂逅了下面一段代碼,查了一下,是關于boxing的,現在介紹一下吧
            Object^ FeedData::TitleGetter(Object^ instance)
            {
                auto object = (FeedData^)instance;
                return PropertyValue::CreateString(object->Title);
            }
            先解釋一下,最后一行object->Title是一個String^類型的值。TitleGetter函數返回值是一個Object^類型,參數也是一個Object^類型,所以PropertyValue::CreateString(String^ value)就應該返回一個Object^類型值,事實當然是如此,但是我們追本逐源地來看一下PropertyValue是個什么東西吧。
                  
            public ref class PropertyValue sealed : Object,
                IPropertyValue
             MSDN的解釋是:Represents a value in a property store 
             字面意思理解就是把一個值放進一個屬性堆里面,也就是boxing了。我的理解是封裝,跟encapsulate差不多的意思,把一個內建類型打包成一個Object^類,也就是相當于原來C++中把內建的int型轉為INT類,只不過這里把int,double,boolean都轉成Object^類型了。
                  PropertyValue類就相當于一個打包公司,有一天你高高興興地想把一個boolean傳給你的朋友func1(Object^ value),你到了這家公司,于是開始下面的對話:
                  你:老板,我要給我的朋友func1寄一個boolean
               老板:客官稍等,我們查到您朋友想要個Object^
                  你:他就像要個boolean,我知道的,他 不過想用Object^掩人耳目罷了,我到你這來,就知道你這里做打包的生意,快些給我打包
               老板:客觀看來您是回頭客了,伙計,來,給這位爺打包!
               伙計齊聲道:要包什么?我們這里可以打包int32,double,string。。。
               老板:boolean,CreateBoolean()跑哪里去了?快來打包!
            CreateBoolean():來了,您稍等,馬上打包完成。
            。。。。so的一聲。。。。
                  你:不錯,是個Object^了,我朋友怎么把boolean取出來?
               老板:取出來也方便,我們這邊有個GetBoolean()工具,但是Dino還沒研究怎么用,不過還有個方法,你可以用IReference<Boolean^> value = dynamic_cast<IReference<int^>> (boxedObj)就行了。
            好嘞,再來講講最后這個解包吧,就是unbox
            IReference是一個接口,可以允許枚舉型,結構體,代理(delegate)等類型轉成一個value。
            generic<typename T>
            public interface class IReference: IPropertyValue

            它只有一個屬性
            public property T^ value
            {
               T^ get();
            }
            用的時候就直接賦值就行了
            IReference<int^> refInt = dynamic_cast<IReferenc<int^>>(boxedObj);
            返回值就是int型。

            總結:給我的感覺Boxing還是相當于把一個內建類型封裝一下,讓其能作為Object^類型傳遞,因為Object^類是所有類的父類,所以可以很方便地轉換成你所需要的類。如果有其他簡單的打包解包方法,請大家提出來,希望有更多的朋友研究Windows 8,可以更多地交流一下。

             之后可能會翻譯Nish Sivakumar 在Code Project上寫的一篇關于Windows Runtime的基礎知識的文章,寫的挺好的,跟大家分享一下。鏈接在此,感興趣的朋友可以去查看:http://www.codeproject.com/Articles/262151/Visual-Cplusplus-and-WinRT-Metro-Some-fundamentals 

            posted on 2012-02-16 12:05 Dino-Tech 閱讀(288) 評論(0)  編輯 收藏 引用
            久久久久久久91精品免费观看| 久久久久久久久久久久中文字幕 | 77777亚洲午夜久久多喷| 亚洲综合日韩久久成人AV| 久久精品男人影院| 久久精品卫校国产小美女| 国产成人无码精品久久久久免费 | 久久国产精品一区| 浪潮AV色综合久久天堂| 99久久成人18免费网站| 婷婷五月深深久久精品| 伊人久久大香线蕉综合5g| 国产产无码乱码精品久久鸭| 亚洲国产成人乱码精品女人久久久不卡 | 99久久精品免费国产大片| 亚洲午夜久久久久久久久电影网 | 久久青青草原亚洲av无码app| 久久久久99精品成人片三人毛片| 无码人妻久久一区二区三区免费丨 | 久久久久久曰本AV免费免费| 国产精品一区二区久久精品无码| 久久亚洲中文字幕精品有坂深雪| 一日本道伊人久久综合影| 国产免费福利体检区久久| 久久99精品综合国产首页| 久久精品国产亚洲AV无码偷窥| 国产亚洲精品久久久久秋霞 | 久久亚洲国产精品五月天婷| AAA级久久久精品无码区| 国内精品久久久久久久97牛牛 | 久久精品国产亚洲AV蜜臀色欲 | 中文精品久久久久人妻不卡| 久久久久久久综合日本| 久久亚洲天堂| 狠狠色丁香久久婷婷综合_中| 亚洲国产天堂久久综合| 亚洲欧洲久久久精品| 欧美日韩精品久久免费| 亚洲AV日韩精品久久久久久| 亚洲va中文字幕无码久久不卡 | av色综合久久天堂av色综合在|