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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

轉(zhuǎn)貼:msdn 訪談錄之C#編程三

2024-07-21 02:22:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

標(biāo)題    msdn 訪談錄之c#編程    rainbow(翻譯)關(guān)鍵字    c#,jeffrey richter出處    http://www.mdsn.com[tr]

程序員天地
robert hess和jeffrey richter(著名的編程作家、專欄作家和咨詢專家)的談話。

robert hess: 歡迎回來(lái)。我們正要涉及到有關(guān)c#編程方面的問(wèn)題。為了有助于我們理解這些問(wèn)題,我邀請(qǐng)我的好朋友jeffery richter到這里來(lái)。jeffery恰好是一名撰寫了很多編程書籍的程序員,他最新的一本書為programming server side applications for windows 2000。現(xiàn)在您也是一位咨詢專家并且擁有自己的公司wintellect,是嗎?


jeffrey richter: wintellect。


robert hess: 我猜您有一個(gè)網(wǎng)站吧?

jeffrey richter:有,wintellect.com。我們專門從事培訓(xùn)、調(diào)試和廣告。


robert hess: 好了,我了解到您最近做了不少有關(guān)c#的工作。

jeffrey richter: 是的,至今已一年有余了,我花了很大的精力一直專攻c#的編程。


robert hess:已經(jīng)有一年了?我想我們才剛發(fā)布了c#。


jeffrey richter:是的,可我一直在圈內(nèi),在microsoft的圈內(nèi),如果您愿意的話。我自己在第42樓安置了一個(gè)小小的辦公室,并在那里從事c#的研究和有關(guān).net這方面的工作,到現(xiàn)在已經(jīng)一年多了。


robert hess: 這樣微軟就會(huì)對(duì)您有所幫助,因?yàn)槟⒉皇俏④浀穆殕T……

jeffrey richter: 對(duì)。


robert hess:他們只是幫助您的把c#當(dāng)成一種語(yǔ)言理解,那么您就可以寫出更多象這樣的書?


jeffrey richter:是的,他們希望我寫更多的書,我得到了幫助,發(fā)現(xiàn)了bug,出席了類似的一些規(guī)范會(huì)議,并與人們交流,因此我覺(jué)得學(xué)到了很多的東西,而不只是寫書,而事實(shí)在某種程度上也對(duì)c#做出了貢獻(xiàn)。所以我可以告訴您,當(dāng)最初開(kāi)始時(shí),我感興趣的第一個(gè)東西就是這種新的語(yǔ)言,我將用它來(lái)寫所有的代碼,我知道這些代碼是為可以預(yù)見(jiàn)的未來(lái)寫的,讓我們暫且不提。我具有非常深厚的c、c++背景,在閱讀與c#相關(guān)文檔和編程參考等資料一個(gè)星期之后,我就覺(jué)得已經(jīng)相當(dāng)精通c#了。并且在一周之內(nèi),我能夠真正地寫出一些有用的東西。

robert hess:僅僅一周之后。


jeffrey richter:是的,僅僅一周之后。因?yàn)樗蚦++非常類似,您知道,那里的大括號(hào)是相同的,返回值是相同的,參數(shù)是相同的,許多東西都是相同的。


robert hess:當(dāng)繼續(xù)使用對(duì)象、析構(gòu)函數(shù)、構(gòu)造函數(shù)、雙冒號(hào)(::)等這些老掉牙的東西時(shí),您似乎就要失去他們所擁有有的某些奇特的命名習(xí)慣,對(duì)嗎?


jeffrey richter:是的是的,雙冒號(hào)(::)都被點(diǎn)號(hào)(.)代替,箭頭號(hào)(->)也被點(diǎn)號(hào)代替,這樣就大大地簡(jiǎn)化了該語(yǔ)言。因而對(duì)于我來(lái)說(shuō)實(shí)在是太容易啦,而且它還具有時(shí)效性,我仍不得不回過(guò)頭去查看該語(yǔ)言參考資料,或許查找如何重載運(yùn)算符,或者某些很平常的東西,要知道,當(dāng)我編程時(shí),極少做一些模糊不清的事。而現(xiàn)在大多數(shù)東西對(duì)我來(lái)說(shuō)是再自然不過(guò)的了。事實(shí)上要解決的只是流程問(wèn)題。


robert hess:既然您從事這項(xiàng)工作已經(jīng)一年多了,那么您注意到了在這段時(shí)間里這種語(yǔ)言自身的演變嗎?是否它們今天仍然與一年以前的十分相同?


jeffrey richter:我認(rèn)為十分相同。但肯定存在著一些小技巧(tweak),在beta測(cè)試階段確實(shí)存在著這些回應(yīng),存在著許多非確定性的析構(gòu)函數(shù)(non deterministic destructor)、對(duì)象的析構(gòu)(destruction of objects)等類似的東西。因此,基類庫(kù)已經(jīng)增加了一個(gè)idisposable接口,我想它將會(huì)出現(xiàn)在beta 2.0版中,而不是在beta 1.0版中。同時(shí)c#已增加了一些新的語(yǔ)言結(jié)構(gòu),以幫助你獲得與對(duì)象的確定性析構(gòu)(deterministic destruction of objects)關(guān)系密切的東西。所以我要說(shuō),微軟已經(jīng)十分在意人們對(duì)該語(yǔ)言的評(píng)價(jià)了,并且他們還企圖在其中加入新的東西以做出回應(yīng)。我同樣了解到,將來(lái)在1.0版之后,他們計(jì)劃要增加泛型(generics),這有點(diǎn)類似c++中的模板,而我可以肯定,為了支持這些性能,c#就要發(fā)展。實(shí)際上當(dāng)處于公共語(yǔ)言運(yùn)行庫(kù)(common language runtime)之中時(shí),所有的語(yǔ)言都能用到泛型。

robert hess:因?yàn)樗鼈兪瞧渲械囊徊糠荩忠蚱涫枪舱Z(yǔ)言運(yùn)行庫(kù),所以它們有權(quán)使用所有的那些功能。那么您認(rèn)為,c#作為一種語(yǔ)言總的來(lái)說(shuō)究竟怎么樣?


jeffrey richter:嗯,正如我所說(shuō)的,c#與c++非常相似,所以我很快便熟悉了。它非常非常的干凈,我要說(shuō)它是非常干凈的。我出身于c++背景,尤其是作為一個(gè)windows c++程序員。ansii擁有c++規(guī)范,微軟為了展示windows中的功能,就想在c++中保留一些技巧,并且使這些技巧看起來(lái)有點(diǎn)像c++中的貴族,可它們從來(lái)就沒(méi)有真正地達(dá)到要求。而微軟仍陸續(xù)增加__try、  __finally 和 __declspec等類似的東西。


robert hess:這就是您正在談?wù)摰腸#。


jeffrey richter:對(duì),當(dāng)然還有c++。因此,這種語(yǔ)言確實(shí)有點(diǎn)恐怖,過(guò)了一會(huì)兒您還是不會(huì)完全弄明白,就如const的用法,當(dāng)聲明一個(gè)指針或者是一個(gè)常量指針時(shí),星號(hào)(*)究竟應(yīng)放在它的前面,還是放在后面?您將無(wú)法斷定這些修飾符到底應(yīng)放在該行的那個(gè)位置。我總是需要查資料。因此在c#中,由于微軟在設(shè)計(jì)時(shí)已經(jīng)預(yù)先向ecma(歐洲計(jì)算機(jī)制造商協(xié)會(huì))做出了要求標(biāo)準(zhǔn)化的提議,所以它實(shí)在很干凈,例如,沒(méi)有什么是以下滑杠開(kāi)始的。當(dāng)然,由于本來(lái)在.net runtime中就沒(méi)有真正的指針,所以在您的代碼中,從頭到尾都不會(huì)能見(jiàn)到*號(hào)和&號(hào)等此類修飾符。這樣當(dāng)考慮它時(shí),看起來(lái)干凈,真的覺(jué)得很爽。

robert hess:難道您不覺(jué)得缺少什么嗎?我的意思是,當(dāng)我在用c編程時(shí),喜歡運(yùn)用指針解決問(wèn)題,對(duì)指針重新分類,利用指針?biāo)惴ǖ壤系粞赖臇|西,您就會(huì)從中獲得極大的樂(lè)趣。難道您在用c#時(shí)就不懷念它嗎?


jeffrey richter:嗯,我不得不承認(rèn),我自己總是有些喜新厭舊,但有時(shí)也有點(diǎn)念它。當(dāng)然總的來(lái)說(shuō),有了c#和.net framework,您就可以始終與其它語(yǔ)言進(jìn)行交互操作(interoperate out),因而如果真的必須那樣做的話,我便用c++而不是c#編程了。c#也確實(shí)提供了一種不安全的關(guān)鍵詞(unsafe keyword),這樣一來(lái),您就可以創(chuàng)建一個(gè)方法并且說(shuō),這是不安全的,您有權(quán)使用指針并對(duì)內(nèi)存進(jìn)行直接操作。盡管如此,我還是從未親自體驗(yàn)過(guò)。至于編碼時(shí)獲得的樂(lè)趣,.net framework和基本os類庫(kù)提供了大量的特性,它們使編程變得有趣了。因此,當(dāng)我不能保留虛擬內(nèi)存并稀疏地提交,也不能在.net framework中利用內(nèi)存映象文件進(jìn)行工作時(shí),至少不能直接進(jìn)行時(shí),也可以通過(guò)交互操作完成,仍然還有其它類似serialization和web服務(wù)等東西,它們有利于創(chuàng)作出真正有價(jià)值的應(yīng)用程序,真正強(qiáng)大而豐富的內(nèi)涵。


robert hess:如今在您的培訓(xùn)班里,您正在教授和灌輸這樣的東西,您還在辦c#的培訓(xùn)班嗎?


jeffrey richter:是的,事實(shí)上剛好這一周,我給第一個(gè)c#編程班上課,當(dāng)時(shí)班里有兩個(gè)visual basic程序員,他們根本就不是面向?qū)ο蟮某绦騿T,而我也沒(méi)有真正地給他們介紹過(guò)c#語(yǔ)言,因?yàn)槲野阎攸c(diǎn)放在公共語(yǔ)言運(yùn)行庫(kù)和基類庫(kù)方面,有關(guān)c#的內(nèi)容想稍后再講。但是,這兩個(gè)vb程序員在上機(jī)實(shí)習(xí)時(shí),對(duì)c#上手很快,幾乎沒(méi)有遇到什么麻煩,而且竟然能用其進(jìn)行開(kāi)發(fā),效率也高。我十分驚訝!


robert hess:其中的原因是由于在c#中,您使用name.name.name.name,而不是name、->、name.name、-> name.*、*、()、&等老掉牙的東西……


jeffrey richter: 確實(shí)這樣。


robert hess:這些在vb中都不會(huì)用到。


jeffrey richter:正確。


robert hess:所以格式看來(lái)相當(dāng)一致。


jeffrey richter:對(duì),相當(dāng)一致。當(dāng)然,他們用大括號(hào){}而不是begin和end,這可能使有些人不適應(yīng)。但我認(rèn)為,他們最多花不到5分鐘的時(shí)間就可以克服它,而且更多產(chǎn)。


rrobert hess:那么以一個(gè)公司的立場(chǎng),假如一個(gè)公司聘請(qǐng)您去開(kāi)設(shè)一個(gè)c#培訓(xùn)班,因此我得去發(fā)現(xiàn)他們是否開(kāi)始考慮把公司的一些成果移植到c#,這就是您建議他們要做的事嗎?或者您認(rèn)為他們應(yīng)處于哪一個(gè)階段?


jeffrey richter:嗯,當(dāng)然它取決于,首先他們必須決定是否要采用.net framework作為開(kāi)發(fā)平臺(tái)。我認(rèn)為這非常有價(jià)值,對(duì)于我來(lái)說(shuō)毫無(wú)問(wèn)題,那是我真正向往的平臺(tái)。如果您正在開(kāi)發(fā).net framework的應(yīng)用軟件,正在編寫新的代碼,在我看來(lái)會(huì)不費(fèi)吹灰之力。 c#上手實(shí)在是很容易,它是一種生機(jī)勃勃的語(yǔ)言,使用正確的方法您會(huì)非常多產(chǎn)的。我個(gè)人也相信大量的vb程序員,vb6.0程序員,將會(huì)轉(zhuǎn)向c#而不是vb7.0。


robert hess:那為什么?


jeffrey richter:因?yàn)槲艺J(rèn)為c#揭示了公共語(yǔ)言運(yùn)行庫(kù)(common language runtime)之中的更多的特性,使您對(duì)代碼及其所表達(dá)的方法具有更多一點(diǎn)的控制權(quán)。您將更直接地與runtime對(duì)話,runtime賦予了您更多的權(quán)力。


robert hess:當(dāng)然,我們本身誰(shuí)都不是vb程序員,所以將明確地在c基礎(chǔ)之上發(fā)展。


jeffrey richter: 您是對(duì)的。


robert hess:所以這正是它物有所值之處,我們有點(diǎn)偏離正題了。那么作為一種語(yǔ)言,您喜歡c#的哪些方面呢?是更簡(jiǎn)單、更徹底(clean)的編程嗎?

jeffrey richter: 嗯,主要是去掉了無(wú)用的東西。 譬如, 嗯, c#不允許您把參數(shù)作為常量(const)聲明,并且您不能擁有一個(gè)const的實(shí)體方法,而在c++中則可以。我知道某些人會(huì)認(rèn)為那樣會(huì)真的喪失語(yǔ)言的特性,但事實(shí)在c++中,const總是會(huì)被無(wú)情地拋棄,這樣您就能在自己的代碼中為所欲為了。由于c#實(shí)在是不允許您使用const,所以它又徹底又易于理解。現(xiàn)在,我想我應(yīng)該說(shuō):對(duì)于我,.net frameworks真正有趣的東西就是公共語(yǔ)言運(yùn)行庫(kù)。它定義對(duì)象如何運(yùn)轉(zhuǎn),或如何創(chuàng)建類型,以及是什么定義了這些類型的行為。這樣您就擁有了一個(gè)基類庫(kù),當(dāng)然它是一個(gè)巨大的類庫(kù),它讓您有權(quán)使用大量的東西,所以即使您愿意,也不必再三重寫每一樣?xùn)|西了。您選擇語(yǔ)言是您個(gè)人的事情,而我選擇了c#是由于它是真正優(yōu)秀的高階語(yǔ)言,它讓我能與framework對(duì)話。但在某種程度上,運(yùn)用.net runtime和基類庫(kù)真正最佳的語(yǔ)言應(yīng)該是中間語(yǔ)言(immediate language)匯編語(yǔ)言。


robert hess:哈!談到匯編語(yǔ)言啦?

jeffrey richter:是的,談到匯編語(yǔ)言了。我的意思是,它使您完全有權(quán)訪問(wèn)平臺(tái)的底層,但在匯編語(yǔ)言的環(huán)境中效率會(huì)很低,有這么多的程序您必須一行一行地寫。所以,c#語(yǔ)言高出了一個(gè)層次。而在c#中的有些性能并不是很常用,因此象anders 這樣的c#設(shè)計(jì)者已決定不必將其公開(kāi)了。在某些情況下,為了訪問(wèn)c#沒(méi)有提供的runtime功能,我可能會(huì)求助于另外一種語(yǔ)言。但總的來(lái)說(shuō),c#是最高層的語(yǔ)言,它允許我在這樣的環(huán)境中按自己的需求解決大量的問(wèn)題,而且效率極高。

robert hess:并不是所有的問(wèn)題,而僅僅只是大部份?


jeffrey richter:不,極少會(huì)出現(xiàn)這種情況:我還需要訪問(wèn)某些東西,而c#卻不讓訪問(wèn)。這是另外一方面,我只是認(rèn)為大家非常容易忘卻的是,當(dāng)您想要訪問(wèn).net的一些功能而c#或某些語(yǔ)言卻不提供給您時(shí),可以轉(zhuǎn)到別的語(yǔ)言。只需編碼創(chuàng)建這個(gè)方法,可能是一個(gè)靜態(tài)方法(static method),類中的靜態(tài)方法,用apl或cobol或凡是您選擇的語(yǔ)言,或許派生,然后用某些語(yǔ)言實(shí)現(xiàn)實(shí)體方法,而這種語(yǔ)言可能真的讓您訪問(wèn)某些底層功能。因此,我認(rèn)為這是一個(gè)功能非常強(qiáng)大的范例,以前我從未真正地領(lǐng)會(huì)過(guò)要選擇最佳的語(yǔ)言去完成工作。

robert hess:好了,我打賭各位觀眾可能想要看一些c#代碼的例子,以便能理解我們談?wù)摰降囊恍﹩?wèn)題。您有例子示范給我們看嗎?

jeffrey richter:有。我確實(shí)的帶來(lái)了一個(gè)源代碼文件,里面有一些例子,能勉勉強(qiáng)強(qiáng)地應(yīng)付,在節(jié)目結(jié)束后,我會(huì)給您的。歡迎您把它上傳到網(wǎng)站上,以讓大家可以下載。所以在這里,如果你樣喜歡的話,我首先要示范的是:在c#中,每一個(gè)方法必須位于類中。沒(méi)有全局方法,也沒(méi)有位于類之外的變量,所以每一樣?xùn)|西都會(huì)被限定在一定的范圍內(nèi)。
using system;

class app {
   public static void main() {
      console.writeline("hello world");
   }
}
這是一個(gè)必須保留的hello world程序,非常簡(jiǎn)單。在程序里,有一個(gè)類叫app,在這個(gè)類里,我擁有自己的一個(gè)main方法,并且main是一個(gè)靜態(tài)方法,因?yàn)樗仨殢耐饷嬲{(diào)用。我們不必?fù)碛衋pp的一個(gè)實(shí)例就可以調(diào)用main。在我這個(gè)例子里,main返回void,并且沒(méi)有接受參數(shù)。簡(jiǎn)單地在main的內(nèi)部,它調(diào)用了console.writeline,在顯示器上面顯示出"hello world"。所以這是您可以寫的、能學(xué)到相關(guān)概念的最小程序了。

robert hess:在c#中main仍然是一個(gè)保留的方法嗎?就象在c++中?


jeffrey richter: main是默認(rèn)的,它具有大寫字母m,小寫字母a-i-n ,因?yàn)閏#是字母大小寫敏感的語(yǔ)言,象c++ 而不象vb 和.net 。所以當(dāng)編譯器編譯代碼時(shí),將尋找一個(gè)叫做main的靜態(tài)方法,然后再使用它。然而有一個(gè)編譯器的命令行,它可以覆蓋掉main并選取其中不同的一個(gè)。順便說(shuō)一下,事實(shí)上這是一門很有用的技巧。一些人把多個(gè)main放到一個(gè)單個(gè)的應(yīng)用程序里,以便進(jìn)行組測(cè)試,當(dāng)編譯時(shí),可以設(shè)置不同的開(kāi)關(guān)執(zhí)行不同的main,以便測(cè)試特定的組件。


robert hess:絕妙的技巧。您也使用象argv、 argc這樣的參數(shù),默認(rèn)地傳遞給main函數(shù)嗎?
using system;

class app {
   public static void main(string[] args) {
      console.writeline("hello world");
   }
}

jeffrey richter:是,隨您的便。在這里,我將當(dāng)場(chǎng)修改這些代碼,也就是說(shuō),string是一個(gè)字符串?dāng)?shù)組,args 按我在幻燈片中播放的定義。順便地,這個(gè)args是什么呢?是一個(gè)數(shù)據(jù)類型!它是一個(gè)指向字符串的指針,或者是一個(gè)指向字符串的引用。說(shuō)到指針,您只見(jiàn)過(guò)帶*號(hào)的,但args確實(shí)是一個(gè)指針。當(dāng)main被調(diào)用之前,啟動(dòng)代碼早已解析命令行,并且創(chuàng)建一個(gè)字符串?dāng)?shù)組,接著把指針傳入該數(shù)組。象對(duì)args.length類似的調(diào)用使我可以解決一些問(wèn)題,該調(diào)用會(huì)返回?cái)?shù)組的length屬性,此屬性含有數(shù)組元素的個(gè)數(shù),然后我正好可以利用一個(gè)正常的for語(yǔ)句進(jìn)行循環(huán),或者可以用c#的for each,特殊的for each語(yǔ)句用于快速的循環(huán)。

robert hess:很新穎,這是在c或c++中所沒(méi)有的。


jeffrey richter:正確。而我確實(shí)也有演示的代碼,我找到了。
static void arraydemo() {
   // 聲明一個(gè)指向數(shù)組的引用
   int32[] ia; // 默認(rèn)值為 null
   ia = new int32[100];
   ia = new int32[] { 1, 2, 3, 4, 5 };
   .
   .
   .
這是一個(gè)具有數(shù)組的代碼的例子,所以我會(huì)略為提一下。在這個(gè)例子里,首先聲明一個(gè)指向int32s數(shù)組的引用,隨意取一個(gè)"ia"用于整數(shù)數(shù)組。它只不過(guò)是一個(gè)指針,具有32位(bit)或64位值,如果它們?nèi)栽?4位系統(tǒng)上運(yùn)行,總是會(huì)被初始化為null,引用總是被初始化為null直到明確地設(shè)置它為止。下面一行,我隨意new(構(gòu)造)了一個(gè)有100個(gè)int32值的數(shù)組。new返回一個(gè)引用,接著我把這個(gè)引用存到"ia"變量中。下一行只不過(guò)演示了另外一種構(gòu)造的方式,這里我又new了一個(gè)int32s數(shù)組,這種專門的c#句法以一個(gè)左大括號(hào)開(kāi)始,后面跟著數(shù)組的元素,當(dāng)然元素之間要用逗號(hào)分開(kāi),然后是一個(gè)右括號(hào)。當(dāng)您第一次見(jiàn)到這種句法時(shí),會(huì)覺(jué)得它有點(diǎn)笨拙。這只不過(guò)是new的另外一種用法,當(dāng)然它可以推算出元素的個(gè)數(shù)。

robert hess: 而這只不過(guò)是預(yù)定義了值:
   .
   .
   .
   // 顯示數(shù)組的內(nèi)容
   foreach (int32 x in ia)
      console.write("{0} ", x);


   //使用多維數(shù)組
   stringbuilder[,] sa = new stringbuilder[10][5];
   for (int x = 0; x < 10; x++) {
      for (int y = 0; y < 5; y++) {
         sa[x][y] = new stringbuilder(10);
      }
   }

   // 使用數(shù)組的數(shù)組(jagged arrays)
   int32 numpolygons = 3;
   point[][] polygons = new point[numpolygons][];
   polygons[0] = new point[3]  { ... };
   polygons[1] = new point[5]  { ... };
   polygons[2] = new point[10] { ... };
}

jeffrey richter:是的,很正確。這就是foreach,它出現(xiàn)在代碼的第一行。"foreach"是c#句法,我肯定所有的.net語(yǔ)言都會(huì)提供此句法,它是一個(gè)極其通用的編程典范,用這種方式,就可以遍歷集合里的元素。因此,這里的foreach int32 x中,"x"是一個(gè)變量,int32當(dāng)然是一種類型,接著我把引用賦予了數(shù)組。foreach將會(huì)自動(dòng)推算出數(shù)組中有多少個(gè)元素,并且每當(dāng)循環(huán)到console.write時(shí),就會(huì)顯示出元素的值,然后再移向下一個(gè)元素。

robert hess:而"for (i=0, i<ia.length, i++)"也做同樣的工作,但如果您想要遍歷所有的元素的話,這種方式有些笨拙以至難于遵循,所以一直持續(xù)不斷地做十分相同的事情,我想會(huì)更加容易。

jeffrey richter:對(duì),精辟。盡管如此,我會(huì)給您一點(diǎn)提示,由于foreach有點(diǎn)酷,也十分精巧,因此省去了大量的編碼。它也另外做一些有關(guān)類型轉(zhuǎn)換(casting)的工作,這對(duì)您同樣也有好處。所以一般來(lái)說(shuō),當(dāng)我寫一個(gè)循環(huán)時(shí),我通常會(huì)以foreach開(kāi)始,然后當(dāng)我繼續(xù)編碼時(shí),有時(shí)經(jīng)常地,我隨后認(rèn)識(shí)到我需要一個(gè)迭代器(iterator),需要一個(gè)從0到實(shí)際數(shù)字的x。是的,我必須知道哪一個(gè)元素號(hào)。所以我終止了重寫這個(gè)循環(huán),相當(dāng)頻繁……

robert hess: 噢,真的嗎?

jeffrey richter: 是真的。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海安县| 新昌县| 清苑县| 中超| 辽源市| 玛曲县| 万全县| 广南县| 高陵县| 蒙自县| 海口市| 阳新县| 义马市| 双城市| 山东省| 通州市| 肇州县| 白山市| 海阳市| 喀喇沁旗| 称多县| 秦皇岛市| 永丰县| 延长县| 察雅县| 精河县| 石台县| 吴川市| 郓城县| 建阳市| 乌拉特后旗| 合川市| 卢湾区| 玉树县| 贵阳市| 泽普县| 鄯善县| 区。| 炉霍县| 荃湾区| 玉田县|