• <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>

            COOOOOOOOL

            從固有的原則出發(fā),向著目標(biāo)誠(chéng)直前進(jìn).所以這樣的行為便名為正當(dāng)?shù)男袨?表示其為尋著正路而行的.

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              26 Posts :: 0 Stories :: 21 Comments :: 0 Trackbacks

            公告

            QQ:774262464 email:cooooooool.2010@gmail.com

            常用鏈接

            留言簿(3)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            積分與排名

            • 積分 - 72481
            • 排名 - 322

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            前言:

            0.1 提要

            歡迎閱讀《展現(xiàn) C#》(Presenting C#)。這本書是你提高企業(yè)編程語(yǔ)言的一條捷徑。這種企業(yè)編程語(yǔ)言帶有下一代編程語(yǔ)言服務(wù)運(yùn)行時(shí)(NGWS Runtime):C#(發(fā)音"C sharp")。

            NGWS Runtime 是一個(gè)不僅管理執(zhí)行代碼、同時(shí)也提供使編程更加容易的動(dòng)態(tài)環(huán)境。編譯器產(chǎn)生受管代碼以指向這種受管理執(zhí)行環(huán)境。你獲得跨平臺(tái)語(yǔ)言集成、跨平臺(tái)語(yǔ)言異常處理、增強(qiáng)安全性、版本控制、安排支持和查錯(cuò)服務(wù)。

            支持NGWS Runtime 的主要語(yǔ)言是C#。支持NGWS框架的很多程序是用C#寫的,因此,在一些帶有NGWS Runtime的編譯器中,它的編譯器可以被認(rèn)為是非常經(jīng)得起測(cè)試且是經(jīng)過(guò)優(yōu)化的。C#語(yǔ)言借鑒了C++,但是具備現(xiàn)代化和新增的類型安全——使C#成為企業(yè)解決方案的首選語(yǔ)言。

            0.2 誰(shuí)應(yīng)該讀這本書

            如果你對(duì)編程很陌生,這本書不適合你。這本書企圖讓程序員解脫并使用C#,基于他們已經(jīng)擁有的知識(shí)。《展現(xiàn) C#》的目標(biāo)瞄準(zhǔn)了已經(jīng)具有如C/C++、VB、Java或其它編程經(jīng)驗(yàn)的程序員。

            如果你具有C++的背景,轉(zhuǎn)向C#會(huì)很容易,但是,如果你精通于其它不同的語(yǔ)言,這本書也會(huì)耗掉你的一些日子。如果你有一點(diǎn)COM編程的知識(shí),這本會(huì)更有趣,但會(huì)COM編程不再是必要的。

            0.3 這本書如何組織

            第一章 C#簡(jiǎn)介——這一章把你帶到C#逛一回,同時(shí)回答了有關(guān)你應(yīng)該考慮學(xué)習(xí)C#的問(wèn)題。
                   第二章 NGWS Runtime 的技術(shù)基礎(chǔ)——介紹NGWS Runtime為運(yùn)行的C#代碼所提供的低層架構(gòu)。
                   第三章 第一個(gè)C#應(yīng)用程序——?jiǎng)?chuàng)建真正第一個(gè)C#應(yīng)用程序(否則它是什么呢?),它就是一個(gè)"Hello World"應(yīng)用程序。
                   第四章 C#類型——可以看到用在C#應(yīng)用程序中的各種類型。探索值型和引用型的區(qū)別,還有如何加框和消框。
                   第五章 類——C#功能真正強(qiáng)大的標(biāo)志,它是具有類的面向?qū)ο蟮木幊獭D銜?huì)學(xué)到好多好多的東西,如構(gòu)造函數(shù)、析構(gòu)函數(shù)、方法、屬性、索引和事件等。
                   第六章 控制語(yǔ)句——對(duì)應(yīng)用程序?qū)嵭辛鞒炭刂啤L剿鰿#提供的各種選擇和陳述語(yǔ)句。
                   第七章 異常處理——獲得了編寫實(shí)現(xiàn)異常處理的應(yīng)用程序技巧,擁有這種技巧,在NGWS Runtime世界,你是一個(gè)好的公民
                   第八章 用C#寫組件——用C#構(gòu)建組件,因?yàn)橹С諲GWS Runtime,它可以被不同語(yǔ)言平臺(tái)的客戶使用。
                   第九章 配置和安排——學(xué)到如何用C#有條件地進(jìn)行編譯工作,和如何為你的C#源碼自動(dòng)地創(chuàng)建文檔。另外,這一章將介紹到NGWS的版本技術(shù)問(wèn)題。
                   第十章 用非受管代碼交互操作——發(fā)現(xiàn)你如何使用C#內(nèi)部的非受管代碼,且非受管代碼如何與你的C#組件一起交互操作。
                   第十一章 C#代碼查錯(cuò)——獲得使用SDK查錯(cuò)工具的技巧,可以在應(yīng)用程序中準(zhǔn)確地找到錯(cuò)誤并修改它們。
                   第十二章 安全——探索NGWS Runtime的安全概念。學(xué)到代碼訪問(wèn)安全性和基于角色的安全性。

            0.4 使用這本書你需要什么?

            從這本書的觀點(diǎn)看,你所需要的就是下一代windows服務(wù)軟件開發(fā)包(NGWS SDK)。盡管至少只要有NGWS Runtime 和C#編譯器就可以,但當(dāng)探索這些激動(dòng)人心的新技術(shù)功能 時(shí),在一臺(tái)機(jī)器上裝有說(shuō)明文件檔和所有的SDK工具(包括debugger),將是一個(gè)極好的主意。
            這本書不需要你裝在機(jī)器上的Visual Studio 7的任何工具。我僅建議你要有一個(gè)優(yōu)秀的支持行數(shù)的程序編輯器,用以編輯C#源文件。
            ……
            (省略掉一些有關(guān)出版過(guò)程和表示感謝的段落)

            0.5 關(guān)于作者

            Christoph Wille,微軟系統(tǒng)工程師(MCSE)、微軟系統(tǒng)開發(fā)師(MCSD)、Netware網(wǎng)絡(luò)管理員(CNA)和MCP-IT,作為一個(gè)網(wǎng)絡(luò)咨詢?nèi)藛T和程序員,特別精通Windows DNA。微軟認(rèn)為他是ASP方面最有價(jià)值的人(MVP),他是和微軟在一起使用早期的C#版本的少數(shù)開發(fā)者之一。
            Christoph 獨(dú)自或參與了幾本書的寫作,包括Sams出版社的《自學(xué)ADO2.5 21天》、《自學(xué)ASP 24小時(shí)》、《自學(xué)MCSE TCP/IP 14天》和《MCSE 訓(xùn)練指南:SQL Server 7管理》。


            第一章 C# 簡(jiǎn)介  

            歡迎您加入C#的世界! 這一章將把您引進(jìn)C#的天地,并回答一些相關(guān)的問(wèn)題,如:您為什么要使用C#,C++和C#的主要有什么不同點(diǎn),以及為什么C#使開發(fā)更容易而且還使您感到很有趣。

            為什么是另外一種編程語(yǔ)言?
            必須回答的一個(gè)問(wèn)題:當(dāng)您已經(jīng)使用C++或VB從事企業(yè)開發(fā)時(shí),為什么還要學(xué)習(xí)另一種語(yǔ)言? 市場(chǎng)式的回答就是:"在企業(yè)計(jì)算領(lǐng)域,C#將會(huì)變成為用于編寫"下一代窗口服務(wù)"(Next Generation Windows Services,簡(jiǎn)寫為NGWS )應(yīng)用程序的主要語(yǔ)言。" 這一章將對(duì)用參數(shù)請(qǐng)求提供支持,并陳列了C#的一些功能。這一章會(huì)使您開胃的。

            C#語(yǔ)言自C/C++演變而來(lái)。但是,它現(xiàn)代、簡(jiǎn)單、完全面向?qū)ο蠛皖愋桶踩H绻荂/C++程序員,學(xué)習(xí)曲線將會(huì)很平坦。許多C#語(yǔ)句直接借用您所喜愛(ài)的語(yǔ)言,包括表達(dá)式和操作符。假如不仔細(xì)看,簡(jiǎn)直會(huì)把它當(dāng)成C++。

            關(guān)于C#最重要的一點(diǎn):它是現(xiàn)代的編程語(yǔ)言。它簡(jiǎn)化和現(xiàn)代化了C++在類、名字空間、方法重載和異常處理等領(lǐng)域。屏棄了C++的復(fù)雜性,使它更易用、更少出錯(cuò)。

            對(duì)C#的易用有貢獻(xiàn)的是減少了C++的一些特性,不再有宏、模板和多重繼承。特別對(duì)企業(yè)開發(fā)者來(lái)說(shuō),上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。使編程更方便的新功能是嚴(yán)格的類型安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標(biāo)都是瞄準(zhǔn)了開發(fā)面向組件的軟件。

            在繼續(xù)呈現(xiàn)出更多的功能之前,我想停下來(lái)并在下面說(shuō)明C#至關(guān)重要的各種要素。

            簡(jiǎn)單
            現(xiàn)代
            面向?qū)ο?br>類型安全
            版本控制
            兼容
            靈活

            簡(jiǎn)單

            C#具有C++所沒(méi)有的一個(gè)優(yōu)勢(shì)就是學(xué)習(xí)簡(jiǎn)單。該語(yǔ)言首要的目標(biāo)就是簡(jiǎn)單。很多功能(還不如說(shuō)是缺少了C++的一些功能)有助于C#全方位的簡(jiǎn)單。

            在C#中,沒(méi)有C++中流行的指針。默認(rèn)地,您工作在受管理的代碼中,在那里不允許如直接存取內(nèi)存等不安全的操作。我想沒(méi)有C++程序員可以聲稱,從沒(méi)有使用指針訪問(wèn)過(guò)不屬于他們的內(nèi)存。

            與指針"戲劇性"密切相關(guān)的是"愚蠢的"操作。在C++中,有::、.、和->操作符,它們用于名字空間、成員和引用。對(duì)于新手來(lái)說(shuō),操作符至今仍是學(xué)習(xí)的一道難關(guān)。C#棄用其它操作符,僅使用單個(gè)操作符 "."。現(xiàn)在一個(gè)程序員所需要理解的就是嵌套名字的注解了。

            您不必記住基于不同處理器架構(gòu)的隱含的類型,甚至各種整型的變化范圍。C#使用統(tǒng)一的類型系統(tǒng),屏棄了C++多變的類型系統(tǒng)。這種系統(tǒng)充許您把各種類型作為一個(gè)對(duì)象查看,它是一個(gè)原始類型還是一個(gè)full-blown 類。和其它編程語(yǔ)言相比,由于加框(boxing)和消框(unboxing)的機(jī)制,把簡(jiǎn)單類型當(dāng)作對(duì)象處理并不能獲得性能的改善。稍后將詳細(xì)解釋加框和消框,但基本上僅當(dāng)需要時(shí)才使用對(duì)象訪問(wèn)簡(jiǎn)單類型這種技術(shù)。

            首先,老練的程序員可能不喜歡它,但是整型和布爾型如今終歸是兩種完全不同的數(shù)據(jù)類型。這就意味著原來(lái)if語(yǔ)句中錯(cuò)誤的賦值現(xiàn)在會(huì)被編譯出錯(cuò),因?yàn)閕f語(yǔ)句只接受布爾類型的值。再也不會(huì)出現(xiàn)誤用賦值符為比較符這樣的錯(cuò)誤!(首次學(xué)C#,cnbruce就感受到了,“=”and “==”:)

            C#同時(shí)也解決了存在于C++中已經(jīng)有些年頭的多余東西(redundancies)。這種多余包括常數(shù)預(yù)定義,不同字符類型等。鑒于多余表單已經(jīng)從該語(yǔ)言中消失,故一般在C#中都可以使用表單了。


            現(xiàn)代

            您投入學(xué)習(xí)C#的努力是一筆大投資,因?yàn)镃#是為編寫NGWS 應(yīng)用程序的主要語(yǔ)言而設(shè)計(jì)。您將會(huì)發(fā)現(xiàn)很多自己用C++可以實(shí)現(xiàn)或者很費(fèi)力實(shí)現(xiàn)的功能,在C#中不過(guò)是一部分基本的功能而已。

            對(duì)于企業(yè)級(jí)的編程語(yǔ)言來(lái)說(shuō),新增的金融數(shù)據(jù)類型很受歡迎。您用到了一種新的十進(jìn)制數(shù)據(jù)類型,它專用于金融計(jì)算方面。如果不喜歡這種現(xiàn)成簡(jiǎn)單的類型,根據(jù)您應(yīng)用程序的特殊需求,可以很容易地創(chuàng)建出新的一種數(shù)據(jù)類型。

            我已經(jīng)提到,指針不再是您編程武器的一部分。不要太驚訝,全面的內(nèi)存管理已經(jīng)不是您的任務(wù)。運(yùn)行時(shí)NGWS提供了一個(gè)垃圾收集器,負(fù)責(zé)C#程序中的內(nèi)存管理。因內(nèi)存和應(yīng)用程序都受到管理,所以很必要增強(qiáng)類型安全,以確保應(yīng)用的穩(wěn)定性。

            對(duì)于C++程序員,異常處理的切不是新的東西,但它是C#的主要功能。C#的異常處理與C++的不同點(diǎn)在于它是交叉語(yǔ)言的(運(yùn)行時(shí)的另一個(gè)功能)。在沒(méi)有C#之前,您必須處理怪異的HRESULTs,但現(xiàn)在由于使用了基于異常的健壯的出錯(cuò)處理, 這一切都 結(jié)束了


            對(duì)于現(xiàn)代的應(yīng)用程序,安全是首要的,C#也不會(huì)例外。它提供了元數(shù)據(jù)語(yǔ)法,用于聲明下述NGWS安全模式的能力和許可。元數(shù)據(jù)是NGWS運(yùn)行時(shí)的一個(gè)關(guān)鍵的概念,下一章將涉及到它更深的含義。

            面向?qū)ο?/p>

            您不會(huì)預(yù)料一種新語(yǔ)言不支持面向?qū)ο蟮墓δ馨? C#當(dāng)然支持所有關(guān)鍵的面向?qū)ο蟮母拍睿绶庋b、繼承和多態(tài)性。完整的C#類模式構(gòu)建在NGWS運(yùn)行時(shí)的虛擬對(duì)象系統(tǒng)(VOS,Virtual Object System)的上層,VOS將在下章描述。對(duì)象模式只是基礎(chǔ)的一部分,不再是編程語(yǔ)言的一部分。

            您一開始必須關(guān)注的事,就是不再有全局函數(shù)、變量或者是常量。所有的東西都封裝在類中,包括事例成員(通過(guò)類的事例--對(duì)象可以訪問(wèn))或都靜態(tài)成員(通過(guò)數(shù)據(jù)類型)。這些使C#代碼更加易讀且有助于減少潛在的命名沖突。

            定義類中的方法默認(rèn)是非虛擬的(它們不能被派生類改寫)。主要論點(diǎn)是,這樣會(huì)消除由于偶爾改寫方法而導(dǎo)致另外一些原碼出錯(cuò)。要改寫方法,必須具有顯式的虛擬標(biāo)志。 這種行為不但縮減速了虛擬函數(shù)表,而且還確保正確版本的控制。

            使用C++編寫類,您可以使用訪問(wèn)權(quán)限(ACCESS modifiers) 給類成員設(shè)置不同的訪問(wèn)等級(jí)。C#同樣支持private、protected 和public 三種訪問(wèn)權(quán)限 ,而且還增加了第四種:internal。有關(guān)訪問(wèn)權(quán)限 的詳細(xì)情況將在第五章 "類" 中說(shuō)明。

            您曾經(jīng)創(chuàng)建了多少個(gè)類是從多基類派生出來(lái)的(ATL 程序員,您的投票不計(jì)在內(nèi)!) ? 大多數(shù)情況,僅需從一個(gè)類派生出。多基類惹出的麻煩通常比它們解決的問(wèn)題還多。那就是為什么C#僅允許一個(gè)基類。如果您覺(jué)得需要多重繼承,可以運(yùn)用接口。

            一個(gè)可能出現(xiàn)的問(wèn)題:在C#中不存在指針,如何模仿它? 這個(gè)問(wèn)題的答案很有代表性,它提供了對(duì)NGWS運(yùn)行時(shí)事件模式的支持。再次,我將把對(duì)它的全面解釋放到第五章。

            類型安全

            我再次選指針作為一個(gè)例子。在C++中擁有一個(gè)指針,您能自由地把它強(qiáng)制轉(zhuǎn)換成為任何類型,包括干出諸如把一個(gè)int*(整型指針)強(qiáng)制轉(zhuǎn)換成一個(gè)double *(雙精度指針)這樣的傻事。只要內(nèi)存支持這種操作,它就"干過(guò)"。這并不是您所想象的企業(yè)級(jí)編程語(yǔ)言的類型安全。

            綱要性的問(wèn)題,C#實(shí)施最嚴(yán)格的類型安全,以保護(hù)自己及垃圾收集器(garbage collector)。所以必須遵守C#中一些相關(guān)變量的規(guī)則:

            您不能使用沒(méi)有初始化的變量。對(duì)于對(duì)象的成員變量,編譯器負(fù)責(zé)清零。而局部變量,則由您負(fù)責(zé)清零。當(dāng)您使用一個(gè)沒(méi)有初始化的變量時(shí),編譯器會(huì)教您怎么做。優(yōu)點(diǎn)是能夠避免由于使用不經(jīng)初始化的變量計(jì)算結(jié)果而導(dǎo)致的錯(cuò)誤,而您還不知道這些奇怪的結(jié)果是如何產(chǎn)生的。

            C#取消了不安全的類型轉(zhuǎn)換。不能把一個(gè)整型強(qiáng)制轉(zhuǎn)換成一個(gè)引用類型(如對(duì)象),而當(dāng)向下轉(zhuǎn)換時(shí),C#驗(yàn)證這種轉(zhuǎn)換是正確的。(也就是說(shuō),派生類真的是從向下轉(zhuǎn)換的那個(gè)類派生出來(lái)的。)

            邊界檢查是C#的一部分。再也不會(huì)出現(xiàn)這種情況:當(dāng)數(shù)組實(shí)際只定義了n-1個(gè)元素,卻超額地使用了n個(gè)元素。

            算術(shù)運(yùn)算有可能溢出終值數(shù)據(jù)類型的范圍。C#允許在語(yǔ)句級(jí)或應(yīng)用程序級(jí)檢測(cè)這些運(yùn)算。在允許檢測(cè)溢出的情況下,當(dāng)溢出發(fā)生時(shí)將會(huì)拋出一個(gè)異常。

            在C#中,被傳遞的引用參數(shù)是類型安全的。

            版本可控(Versionable)

            在過(guò)去的幾年中,幾乎所有的程序員都至少有一次不得不涉及到眾所周知的"DLL地獄"。該問(wèn)題起因于多個(gè)應(yīng)用程序都安裝了相同DLL名字的不同版本。有時(shí),老版本的應(yīng)用程序可以很好地和新版本的DLL一起工作,但是更多的時(shí)候它們會(huì)中斷運(yùn)行。現(xiàn)在的版本問(wèn)題真是令人頭痛。

            就象您將在第八章"用C#寫組件"所看到的,NGWS runtime 將對(duì)您所寫的應(yīng)用程序提供版本支持。C#可以最好地支持版本控制。盡管C#不能確保正確的版本控制,但是它可以為程序員保證版本控制成為可能。有這種支持,一個(gè)開發(fā)人員就可以確保當(dāng)他的類庫(kù)升級(jí)時(shí),仍保留著對(duì)已存在的客戶應(yīng)用程序的二進(jìn)制兼容。

            兼容

            C#并沒(méi)有存在于一個(gè)封閉的世界中。它允許使用最先進(jìn)的NGWS的通用語(yǔ)言規(guī)定(Common Language Specification,簡(jiǎn)寫為CLS)訪問(wèn)不同的API。CLS規(guī)定了一個(gè)標(biāo)準(zhǔn),用于符合這種標(biāo)準(zhǔn)的語(yǔ)言的內(nèi)部之間的操作。為了加強(qiáng)CLS的編譯,C#編譯器檢測(cè)所有的公共出口編譯,并在通不過(guò)時(shí)列出錯(cuò)誤。

            當(dāng)然,您也想能夠訪問(wèn)舊一點(diǎn)的COM對(duì)象。NGWS運(yùn)行時(shí)提供對(duì)COM透明的訪問(wèn)。如何集成原來(lái)的代碼將在第10章"非管理代碼的內(nèi)部操作"有介紹。

            OLE 自動(dòng)化是一種特殊的動(dòng)物。任一個(gè)使用C++創(chuàng)建OLE自動(dòng)化項(xiàng)目的人已經(jīng)喜歡上各種各樣的自動(dòng)化數(shù)據(jù)類型。有個(gè)好消息就是C#支持它們,而沒(méi)有煩鎖的細(xì)節(jié)。

            最后,C#允許您 用C 原型的API進(jìn)持內(nèi)部操作。可以從您的應(yīng)用程序訪問(wèn)任何DLL中的入口點(diǎn)(有C的原型)。用于訪問(wèn)原始API的功能稱作平臺(tái)調(diào)用服務(wù)(Plaform Invocation Services ,縮寫PInovke),第10章將展示使用C API進(jìn)行內(nèi)部操作的一些例子。

            靈活

            上一部分的最后一段有可能提醒了程序員。您可能會(huì)問(wèn):"難道就沒(méi)有我要傳遞指針的API嗎?" 您是正確的。不是僅有少數(shù)的這種API,而是很多(有點(diǎn)保守的估計(jì))。這種對(duì)原始WIN32代碼的訪問(wèn)有時(shí)導(dǎo)致對(duì)非安全類指定指針的使用(盡管它們中的一些由于受COM和PInvoke的支持可以解決)。

            盡管C#代碼的缺省狀態(tài)是類型安全的,但是您可以聲明一些類或者僅聲明類的的方法是非安全類型的。這樣的聲明允許您使用指針、結(jié)構(gòu),靜態(tài)地分配數(shù)組。安全碼和非安全碼都運(yùn)行在同一個(gè)管理空間,這樣暗示著當(dāng)從安全碼調(diào)用非安全碼時(shí)不會(huì)陷入列集(marshaling)。

            小結(jié)

            C#語(yǔ)言從C和C++演變而來(lái),它是給那些愿意犧牲C++一點(diǎn)底層功能,以獲得更方便和更產(chǎn)品化的企業(yè)開發(fā)人員而創(chuàng)造的。C#現(xiàn)代、簡(jiǎn)單、面向?qū)ο蠛皖愋桶踩1M管它借鑒了C和C++的許多東西,但是在一些諸如名字空間、類、方法和異常處理等特定領(lǐng)域,它們之間還存在著巨大的差異。

            C#為您提供了方便的功能,如垃圾收集、類型安全、版本控制,等等。僅有的"代價(jià)"就是,代碼操作默認(rèn)是類型安全的,不允許指針。光是類型安全就可以搞定了。但是,如果您需要指針,仍可以通過(guò)非安全碼使用它們,而且當(dāng)調(diào)用非安全碼時(shí),不能含有列集

            posted on 2009-12-15 21:05 COOOOOOOOL 閱讀(201) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲国产精品久久久久久| 久久久精品视频免费观看| 久久精品国产第一区二区| 亚洲午夜久久久久久久久电影网 | 欧美激情精品久久久久| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲精品乱码久久久久久中文字幕 | 日韩精品久久久肉伦网站| 国产亚洲色婷婷久久99精品91| 91久久精品91久久性色| 久久天天躁狠狠躁夜夜96流白浆 | 国产三级久久久精品麻豆三级 | 亚洲狠狠婷婷综合久久久久| 人妻无码久久精品| 久久香综合精品久久伊人| 欧美日韩精品久久久免费观看| 国产成人精品白浆久久69| 亚洲AV日韩精品久久久久久| 久久精品国产久精国产一老狼| 久久综合久久鬼色| 久久精品国产只有精品66| 无码精品久久一区二区三区| 日韩美女18网站久久精品| 日日狠狠久久偷偷色综合免费 | 亚洲精品乱码久久久久久不卡| 成人资源影音先锋久久资源网| 久久精品天天中文字幕人妻| 少妇熟女久久综合网色欲| 亚洲va久久久噜噜噜久久天堂| 日韩一区二区三区视频久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 成人综合伊人五月婷久久| 日韩欧美亚洲综合久久影院d3| 久久久久四虎国产精品| 欧美国产成人久久精品| 亚洲AV日韩精品久久久久久| 久久精品国产91久久麻豆自制| 久久av高潮av无码av喷吹| 久久这里有精品| 国产成人久久精品激情| 久久综合九色综合久99|