精通C# 3.0與.NET 3.5高級編程

出版時間:2009-7  出版社:清華大學(xué)  作者:丁士鋒//朱毅//楊明羽  頁數(shù):782  
Tag標(biāo)簽:無  

前言

讀必有所學(xué),學(xué)必有所用,用必有所成!.NET 3.5框架中到底發(fā)生了什么巨變?2009年最流行的開發(fā)語言是C#,2009年最流行的框架是.NET 3.5,這些是微軟的口號和目標(biāo)。因?yàn)槲④浥c眾多中國企業(yè)有合作關(guān)系,所以.NET 3.5的普及像颶風(fēng)一樣登陸中國。很多企業(yè)在招聘條件中留下了這樣一條:會Visual Studio 2008和.NET 3.5框架者       優(yōu)先。微軟為什么力推.NET 3.5框架,它究竟能為企業(yè)帶來什么?這些問題的答案值得讀   者反復(fù)思考。本書寫作的目的就是為了尋找這些答案。下面來看一下.NET 3.5框架的結(jié)    構(gòu)圖。 這是一個整體的開發(fā)框架,除最下面是微軟的操作系統(tǒng),基本與.NET框架沒有關(guān)系外。中間部分和最上面的應(yīng)用程序類型,其實(shí)都發(fā)生了巨大的改變。在數(shù)據(jù)庫開發(fā)方面,原有的ADO.NET又增加了一種LINQ(集成查詢語言)方式。這種方式給數(shù)據(jù)庫開發(fā)帶來了變革,這是ORM(對象關(guān)系映射)流行開發(fā)的一個結(jié)果。ORM就是把數(shù)據(jù)庫的每張表,都作為一個對象,映射到.NET應(yīng)用程序框架中。而WPF、WCF和WF則是新增加的框架,每種技術(shù)都能為開發(fā)速度和開發(fā)質(zhì)量帶來質(zhì)的飛躍。四大利器都能完成什么功能?所有研究.NET 3.5框架的人都把這些新技術(shù)稱為四大利器。但還是有很多人不明白這些究竟能為項(xiàng)目帶來什么優(yōu)勢?能為程序員帶來什么便利?能具體應(yīng)用到哪些地方?這些問題是所有開發(fā)人員都關(guān)注的問題,也是本書要介紹的重點(diǎn)知識。(1)LINQ技術(shù)將傳統(tǒng)查詢語言(如SQL)和傳統(tǒng)開發(fā)語言(如C#)集成到一起,使得對內(nèi)存數(shù)據(jù)的查詢更加高效、語法更簡單。這種變革涉及LINQ語法、LINQ to ADO.NET和LINQ to XML等技術(shù)。(2)WPF是創(chuàng)建華麗用戶界面的基本技術(shù),讓用戶的Windows界面像Vista系統(tǒng)一樣。WPF能開發(fā)什么東西呢?WPF應(yīng)用程序:獨(dú)立可執(zhí)行應(yīng)用程序,類似exe應(yīng)用程序。WPF瀏覽器應(yīng)用程序:基于XAML的瀏覽器的應(yīng)用程序(好似B/S應(yīng)用程序)。WPF用戶控件庫:用于創(chuàng)建可重用的、組件化的用戶控件庫。WPF自定義控件庫:用于開發(fā)WPF自定義控件的控件庫項(xiàng)目。(3)WCF(Windows Communication Foundation)作為微軟對SOA(Service Oriented Architecture,面向服務(wù))這一熱潮的回應(yīng),成為了.NET 3.5中最為重要的組成部分之一。WCF整合了以前微軟對分布式系統(tǒng)開發(fā)所作出的所有努力,如.NET Remoting、WSE 2.0、WSE 3.0等。WCF是不是SOA?是不是面向服務(wù)的編程?這個疑問從一開始就有很多人提出來。的確,WCF簡化了SOA面向服務(wù)開發(fā)技術(shù),并且支持跨區(qū)域、跨服務(wù)器的各種分布式開發(fā),也支持未來的開發(fā)模式,想不學(xué)習(xí)都難!面向服務(wù)開發(fā),就是一個程序調(diào)用的服務(wù)可能來自不同的服務(wù)器,如下圖所示就是一個客戶調(diào)用了來自不同地方的4個服務(wù)。(4)WF就是工作流,所有做過OA系統(tǒng)的人都知道,所有做過項(xiàng)目的人也都知       道,任何一個系列頭離不開流程,如項(xiàng)目的初期規(guī)劃、項(xiàng)目的進(jìn)度、項(xiàng)目的管理資源分配。WF都能給你一個完美的解決方案。如下圖給出了一個訂單批核的工作流。如果用普通的C#語言開發(fā),一般程序員可能用一周,而如果用WF,那最多用半天,簡化了程序員的勞動程序。C#開發(fā)語言即將何去何從?C#是微軟推出的面向?qū)ο箝_發(fā)語言,因?yàn)槲④浀闹ν茝V,目前已經(jīng)超過Visual Basic,成為最流行的最快速的開發(fā)語言。目前最新的C#版本是3.0,支持.NET 3.0和.NET 3.5框架,最新的開發(fā)工具是Visual Studio 2008。提升了版本,那究竟用C#都能干什么呢?學(xué)習(xí)了一身武藝,該如何施展呢?下面用幾個老作者的話來幫助讀者分析分析。? C#的開發(fā)方向涉及了幾乎所有的領(lǐng)域,如窗體開發(fā)、網(wǎng)絡(luò)開發(fā)、手機(jī)開發(fā)、通信開發(fā)、數(shù)據(jù)庫開發(fā)等。? C#基于.NET框架之上,只需要學(xué)習(xí)兩部分內(nèi)容:語法基礎(chǔ)和如何調(diào)用類庫。因?yàn)?NET框架幾乎提供了各種應(yīng)用開發(fā)所需要的類庫,如針對安全的、針對驗(yàn)證的、針對網(wǎng)絡(luò)的、針對數(shù)據(jù)庫的等。? C#開發(fā)語言會越來越犀利,它已經(jīng)結(jié)合了Visual Basic的快速開發(fā)功能和Java的快速安全功能,但它還是不能具備與平臺無關(guān)性。? C#具有語法表現(xiàn)能力強(qiáng)、簡單易學(xué)的特點(diǎn),同時微軟提供的Visual Studio開發(fā)工具,能幫助開發(fā)人員快速、方便地找到各種錯誤、技巧和方法與類的定義,而且Visual Studio還集編碼、調(diào)試、測試為一體。如何學(xué)好C#?——多位資深程序員的心得共享如何學(xué)好C#,這是每個初學(xué)者必問的問題。下面來聽聽資深開發(fā)者的這些話吧。? 找問題、提問題、解決問題,這是我學(xué)習(xí)新技術(shù)的三大法寶。? 選擇好的開發(fā)語言、好的開發(fā)工具和好的開發(fā)方向,這是C#的門檻。? 不是所有的語言都要學(xué),但語言的語法一定要學(xué)精。同時要了解這門語言能帶來什么,能提升什么,能為我們做什么。? 了解技術(shù)的先進(jìn)性,掌握基礎(chǔ)語法、先進(jìn)技術(shù)和技巧,多實(shí)踐。下圖是我從一個C#初學(xué)者到高級研究員的行走曲線。 本書內(nèi)容特色本書不僅講解了.NET 3.5框架之上的4種開發(fā)技術(shù):LINQ、WPF、WF和WCF,還通過這些技術(shù),深入學(xué)習(xí)了.NET 3.5的底層開發(fā)技術(shù)。本書知識點(diǎn)豐富、應(yīng)用實(shí)例廣泛,是多位作者共同努力的結(jié)果。每位作者在.NET不同的領(lǐng)域,都有自己最擅長的技術(shù)。全書講解方式簡單直白,難點(diǎn)注釋清楚,實(shí)例力求接近實(shí)際。本書內(nèi)容主要有以下特色。? 本書首先從C#的基礎(chǔ)語法和面向?qū)ο缶幊讨v起,為初學(xué)者鋪墊入門之路。? 本書盡量減少長篇代碼段,力爭每個代碼段都讓讀者明明白白。? 本書知識點(diǎn)豐富,涉及這4項(xiàng)關(guān)鍵技術(shù)方方面面的應(yīng)用。? 本書實(shí)例面向?qū)嶋H開發(fā),讀者可根據(jù)實(shí)際情況順手拈來。? 對于讀者工作中經(jīng)常遇到的問題,給出了技巧、注意等專門說明。本書知識結(jié)構(gòu)體系本書首先普及了C#的基礎(chǔ)語法,然后介紹了如何用C#進(jìn)行面向?qū)ο缶幊?。最后將?nèi)容分解,逐一介紹.NET 3.5的4大法寶。本書共分成5篇。第1篇(第1章~第3章):這是C#面向?qū)ο箝_發(fā)的基礎(chǔ),包括語法和面向?qū)ο缶幊?。主要是帶領(lǐng)讀者學(xué)習(xí)和回顧一些C#的關(guān)鍵知識點(diǎn)。第2篇(第4章~第6章):介紹.NET 3.5中的集成查詢技術(shù)LINQ。這種技術(shù)代替了原有的SQL,而且可以提供更好的完全面向?qū)ο箝_發(fā)的數(shù)據(jù)通信技術(shù)。LINQ可以與常見的數(shù)據(jù)庫、XML、Dataset等進(jìn)行交互,是多功能集成查詢技術(shù)。本篇提供了20個完整案例,供讀者進(jìn)行理論學(xué)習(xí)后的實(shí)踐操作。第3篇(第7章~第18章):WPF一直被稱為最絢麗的技術(shù),是微軟公司在.NET Framework 3.5平臺上推出的一個圖形平臺。使用WPF可以在Windows Vista操作系統(tǒng)平臺上開發(fā)出具有絢麗視覺效果的應(yīng)用程序,而且這些效果還可以應(yīng)用在Windows XP或者是Windows 2003操作系統(tǒng)上。本篇是全書的重點(diǎn)推薦篇。因?yàn)殡S著技術(shù)的發(fā)展,如何讓人們覺得網(wǎng)絡(luò)生活更美、更有趣、更智能是開發(fā)人員的追求,而WPF是實(shí)現(xiàn)這一追求的目標(biāo)。本篇共有130多個案例,其中有10多個大的案例。第4篇(第19章~第22章):WF是微軟在.NET 3.0之后推出的一套工作流開發(fā)框架,是所有OA系統(tǒng)必需的一項(xiàng)功能。最早的WinFx是WF的前身,在.NET 3.5框架中,推出了更完整的工作流定義程序。WF不是一個獨(dú)立的工作流應(yīng)用程序,它提供了一些類庫用于輔助工作流應(yīng)用程序的開發(fā),并提供了實(shí)現(xiàn)工作流應(yīng)用程序時所需要實(shí)現(xiàn)的一些機(jī)制。本篇30個大小案例,其中大的案例有5個,實(shí)戰(zhàn)項(xiàng)目1個。第5篇(第23章~第28章):WCF是與SOA息息相關(guān)的技術(shù)。本篇會讓讀者首先明白究竟什么是SOA,然后介紹SOA技術(shù)的原理,最后會讓讀者學(xué)會使用WCF技術(shù)。WCF的設(shè)計(jì)目的是為分布式計(jì)算提供可管理的方法,提供廣泛的互操作性,并為服務(wù)定位提供直接的支持。本篇有50多個案例。適合閱讀本書的讀者有哪些?? 想學(xué)習(xí)C# 3.0開發(fā)技術(shù)的人員;? C# 3.0初級、中級人員;? 想開發(fā)絢麗的WinForm窗體應(yīng)用程序開發(fā)的人員;? 想使用WPF進(jìn)行應(yīng)用程序開發(fā)的人員;? 想學(xué)習(xí)LINQ使用的人員;? 想學(xué)習(xí)OA系統(tǒng)的人員;? 想學(xué)習(xí)WCF遠(yuǎn)程通信技術(shù)的人;? 想深入了解.NET框架的開發(fā)人員;? 想使用書中其他具體技術(shù)的人員。本書編委會本書由歐振旭任主編,組織人員編寫。其他編委有武冬、郅曉娜、孫美芹、衛(wèi)麗行、尹翠翠、蔡繼文、陳曉宇、遲劍、鄧薇、郭利魁、金貞姬、李敬才、李萍、劉敬、陳慧、劉艷飛。本書作者本書由丁士鋒、朱毅、楊明羽主筆編寫。其他參與編寫和資料整理的人員有武冬、郅曉娜、孫美芹、衛(wèi)麗行、尹翠翠、蔡繼文、陳曉宇、遲劍、鄧薇、郭利魁、金貞姬、李敬才、李萍、劉敬、陳慧、劉艷飛、呂博、全哲、佘勇、宋學(xué)江、王浩、王康、王楠、楊宗芳、張嚴(yán)虎、周玉、張平、張靖波、周芳、楊罡、于海濱、張晶杰、張利峰、楊景鳳、陳鍇、鄭劍鋒、葉佩思、張濤、趙東彪、王雙、王賢勤、陳燕良、朱奇俊、張承明、郭建利、胡超、黃艷、張?jiān)?、李琳娜、楊紹波、李寧、李鵬程、翟寶利、趙輝、岳付強(qiáng)、辛本柱、辛立偉、趙生超、徐建等。在此一并表示感謝!編者2009年1月

內(nèi)容概要

  C#是微軟推出的一種面向?qū)ο箝_發(fā)語言,其能讓已有經(jīng)驗(yàn)的開發(fā)人員輕松上手,并在很短的時間內(nèi)就可以使用C#高效地進(jìn)行工作。這是讀者選擇C#的原因。目前最新的C#版本就是.NET3.5框架上的C#3.0。本書借助VisualStudio2008開發(fā)工具,詳細(xì)介紹了.NET框架中的4大開發(fā)利器:LINQ、WPF、WF和WCF。LINQ是集成查詢語言,它在對象和數(shù)據(jù)之間建立一種對應(yīng)關(guān)系,可以使用訪問內(nèi)存對象的方式查詢數(shù)據(jù)集合。WPF是C#開發(fā)的圖形平臺,它改變了傳統(tǒng)Windows程序員的開發(fā)觀念和開發(fā)方式。WF不是一個獨(dú)立的工作流應(yīng)用程序,它提供了一些類庫用于輔助工作流應(yīng)用程序的開發(fā),并提供了實(shí)現(xiàn)工作流應(yīng)用程序時所需要實(shí)現(xiàn)的一些機(jī)制,比如持久化、補(bǔ)償、跟蹤機(jī)制等。WCF是遠(yuǎn)程通訊技術(shù),其傳承了SOA設(shè)計(jì)的優(yōu)勢?!  毒–# 3.0與NET 3.5高級編程:LINQ、WCF、WPF、WF》實(shí)例具有代表性、編碼規(guī)范、講解詳細(xì),可作為特定技術(shù)開發(fā)人員的指導(dǎo)教程,也可以讓讀者更深入地學(xué)習(xí).NET3.5框架的原理和組成。

作者簡介

丁士鋒  畢業(yè)于國防科技大學(xué)計(jì)算機(jī)學(xué)院。有多年的大型軟件系統(tǒng)開發(fā)經(jīng)驗(yàn),有近8年的.NET軟件項(xiàng)目研發(fā)經(jīng)驗(yàn),擅長C#語言,對.NET框架及其底層機(jī)制有深入的理解。曾經(jīng)任職于三星電子、諾基亞等公司,從事軟件項(xiàng)目開發(fā)。對企業(yè)軟件的設(shè)計(jì)與架構(gòu)有深入的研究和大量經(jīng)驗(yàn),主導(dǎo)過多個大型的企業(yè)分布式項(xiàng)目的開發(fā)。朱毅  畢業(yè)于上海交通大學(xué),獲信息工程、計(jì)算機(jī)科學(xué)雙學(xué)士學(xué)位。之后又獲得了復(fù)旦大學(xué)軟件工程碩士學(xué)位。有6年多的.NET研發(fā)經(jīng)驗(yàn),涉及分布式系統(tǒng)、B/S體系結(jié)構(gòu)系統(tǒng)、C/S體系結(jié)構(gòu)系統(tǒng)的架構(gòu)和開發(fā)。曾任職于西門子移動通信有限公司,擔(dān)任項(xiàng)目經(jīng)理,致力于企業(yè)ERP系統(tǒng)的架構(gòu)?,F(xiàn)任職于惠普有限公司ISEE項(xiàng)目組進(jìn)行項(xiàng)目開發(fā)。長期活躍于各大技術(shù)社區(qū),曾著有《.NET程序員面試指南》一書。業(yè)余時間喜歡閱讀和旅游。楊明羽  畢業(yè)于浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),高級軟件工程師。多年來一直從事軟件開發(fā)和項(xiàng)目管理類工作,有近10年的軟件開發(fā)經(jīng)驗(yàn)。擅長C#語言,深入理解.NET框架底層機(jī)制,長期追蹤.NET框架的最新技術(shù)。曾任職于263在線、阿里巴巴等網(wǎng)絡(luò)公司?,F(xiàn)任職于上海某大型網(wǎng)絡(luò)科技公司,擔(dān)任技術(shù)總監(jiān)一職。

書籍目錄

第1篇  C#面向?qū)ο箝_發(fā)基礎(chǔ)第1章  .NET框架和Visual Studio 2008 開發(fā)工具 21.1  .NET 3.5框架一覽 21.1.1  框架包含的開發(fā)語言 21.1.2  C#開發(fā)語言的特點(diǎn) 31.1.3  C#的運(yùn)行機(jī)制 31.1.4  C#的類庫框架 41.2  Visual Studio 2008 開發(fā)界面 41.2.1  Visual Studio 2008界面一覽 51.2.2  菜單欄 51.2.3  工具欄 61.2.4  工具箱 71.2.5  屬性窗口 71.2.6  解決方案資源管理器 71.2.7  服務(wù)器資源管理器 81.3  創(chuàng)建C#應(yīng)用程序 91.3.1  控制臺應(yīng)用程序(Console) 91.3.2  Windows 應(yīng)用程序(Forms) 101.3.3  ASP.NET 3.5網(wǎng)站 111.4  小結(jié) 12第2章  C#的語法知識 132.1  變量、常量和表達(dá)式 132.1.1  常量 132.1.2  變量 132.1.3  變量的類型 142.1.4  類型轉(zhuǎn)換 142.1.5  變量的作用域和生存周期 152.1.6  表達(dá)式 152.2  運(yùn)算符 162.2.1  算術(shù)運(yùn)算符 162.2.2  關(guān)系運(yùn)算符和邏輯運(yùn)算符 162.2.3  賦值運(yùn)算符 172.2.4  ?運(yùn)算符 172.2.5  運(yùn)算符優(yōu)先級 172.3  流程控制語句 182.3.1  if語句 182.3.2  switch語句 182.3.3  for語句 202.3.4  foreach語句 202.3.5  while語句 212.4  方法和函數(shù) 212.4.1  方法和函數(shù)的定義 212.4.2  函數(shù)的參數(shù) 222.4.3  函數(shù)的返回值 222.4.4  函數(shù)的重載 222.4.5  委托 232.5  泛型 232.5.1  什么是泛型 232.5.2  泛型的應(yīng)用范圍 242.6  小結(jié) 24第3章  C#的面向?qū)ο筇匦?253.1  面向?qū)ο缶幊谈攀?253.1.1  什么是類和對象 253.1.2  用C#如何創(chuàng)建類 263.1.3  用C#如何創(chuàng)建對象 273.1.4  什么是面向?qū)ο缶幊?273.2  面向?qū)ο蟮募夹g(shù) 283.2.1  接口 283.2.2  用C#如何創(chuàng)建接口 283.2.3  繼承 293.2.4  用C#如何實(shí)現(xiàn)繼承 293.2.5  多態(tài) 303.2.6  用C#如何實(shí)現(xiàn)多態(tài) 313.3  面向?qū)ο箝_發(fā)的簡單實(shí)例 313.3.1  面向?qū)ο蠊δ茉O(shè)計(jì) 313.3.2  面向?qū)ο蟮念愒O(shè)計(jì) 323.3.3  面向?qū)ο蟮膽?yīng)用 323.4  小結(jié) 34第2篇  C#中的LINQ開發(fā)第4章  LINQ查詢基礎(chǔ) 364.1  LINQ基礎(chǔ)概念 364.1.1  什么是LINQ 364.1.2  如何使用LINQ 374.1.3  LINQ查詢 384.2  LINQ查詢表達(dá)式 394.2.1  查詢表達(dá)式 394.2.2  用from子句指定數(shù)據(jù)源 404.2.3  用select子句指定目標(biāo)數(shù)據(jù) 414.2.4  用where子句指定篩選條件 444.2.5  用orderby子句進(jìn)行排序 464.2.6  用group子句進(jìn)行分組 484.2.7  用from子句進(jìn)行復(fù)合查詢 504.2.8  用join子句進(jìn)行聯(lián)接 524.2.9  用join子句進(jìn)行內(nèi)部聯(lián)接 524.2.10  用join子句進(jìn)行分組聯(lián)接 534.2.11  用join子句進(jìn)行左外部聯(lián)接 544.3  LINQ查詢方法 554.3.1  IEnumerable接口 554.3.2  Lambda表達(dá)式 574.3.3  用Where()方法進(jìn)行篩選 584.3.4  用OrderBy()方法進(jìn)行排序 604.3.5  用Skip()、SkipWhile()跳過元素 624.3.6  用Take()、TakeWhile()提取元素 634.3.7  用Max()等對元素進(jìn)行數(shù)值計(jì)算 644.3.8  用Distinct()消除集合中相等的元素 664.3.9  用Concat()連接兩個集合 684.3.10  用Union()等進(jìn)行集合操作 694.4  小結(jié) 71第5章  LINQ to ADO.NET——支持LINQ 語言與ADO.NET的交互 725.1  LINQ to ADO.NET概述 725.1.1  LINQ to DataSet概述 725.1.2  LINQ to SQL概述 735.2  LINQ to DataSet——實(shí)現(xiàn)復(fù)雜數(shù)據(jù)查詢 745.2.1  使用LINQ to DataSet 745.2.2  查詢單個數(shù)據(jù)表 755.2.3  查詢多個數(shù)據(jù)表 785.2.4  用查詢創(chuàng)建數(shù)據(jù)表 815.2.5  修改表中字段數(shù)據(jù) 835.2.6  使用數(shù)據(jù)視圖DataView 845.3  LINQ to SQL——對象模型 875.3.1  對象模型的原理 875.3.2  生成對象關(guān)系設(shè)計(jì)器 885.3.3  對象關(guān)系設(shè)計(jì)器的構(gòu)成 905.3.4  深入LINQ to SQL類 915.3.5  通過綁定瀏覽數(shù)據(jù)庫記錄 935.3.6  用LINQ查詢LINQ to SQL類 955.3.7  修改數(shù)據(jù)庫記錄 965.4  小結(jié) 98第6章  LINQ To XML——支持LINQ語言與 XML語言的交互 996.1  LINQ to XML概述 996.1.1  什么是LINQ to XML 996.1.2  LINQ to XML與DOM 1016.2  構(gòu)造XML樹 1026.2.1  構(gòu)造簡單的XML元素 1026.2.2  構(gòu)造具有屬性的XML元素 1046.2.3  構(gòu)造具有子元素的XML元素 1076.2.4  用XElement類構(gòu)造XML樹 1086.3  查詢XML樹 1096.3.1  查找具有特定屬性的元素 1096.3.2  查找具有特定子元素的元素 1116.3.3  對XML元素進(jìn)行排序 1126.3.4  基于上下文查詢元素 1136.4  操作XML樹 1156.4.1  加載和保存XML樹 1156.4.2  添加元素到XML樹 1166.4.3  移除XML樹的元素和屬性 1186.5  小結(jié) 122第3篇  WPF美輪美奐技術(shù)第7章  WPF編程入門 1267.1  WPF概述 1267.1.1  理解Windows圖形系統(tǒng) 1267.1.2  WPF的功能特點(diǎn) 1277.1.3  WPF架構(gòu)簡介 1277.1.4  WPF的類層次結(jié)構(gòu) 1287.2  WPF開發(fā)工具簡介 1307.2.1  Visual Studio 2008開發(fā)工具 1307.2.2  Microsoft Expression Blend設(shè)計(jì)工具 1317.2.3  XAMLPad標(biāo)記文本查看器 1327.2.4  ZAM 3D第三方工具(3D模型) 1337.3  第一個WPF應(yīng)用程序 1337.4  WPF應(yīng)用程序結(jié)構(gòu) 1357.5  WPF與.NET Framework 3.5平臺 1357.5.1  Windows Communication Foundation概述 1367.5.2  Windows CardSpace概述 1377.5.3  Windows Workflow Foundation 概述 1377.6  小結(jié) 138第8章  XAML標(biāo)記語言 1398.1  理解XAML 1398.1.1  XAML是什么 1398.1.2  用C#模擬XAML實(shí)現(xiàn)的內(nèi)容 1418.1.3  XAML的種類 1438.2  XAML基礎(chǔ) 1438.2.1  命名空間 1448.2.2  代碼后置文件 1468.2.3  使用簡單的屬性和類型轉(zhuǎn)換器 1498.2.4  屬性語法與屬性元素語法 1508.2.5  標(biāo)記擴(kuò)展特性 1528.2.6  附加屬性 1538.2.7  特定的字符和空白 1558.2.8  在XAML中使用事件 1578.2.9  使用其他命名空間中的類型 1588.2.10  加載和編譯XAML 1608.3  小結(jié) 164第9章  Application全局應(yīng)用程序類 1669.1  應(yīng)用程序生命周期 1669.1.1  創(chuàng)建Application對象 1669.1.2  創(chuàng)建一個自定義的Application類 1689.1.3  關(guān)閉應(yīng)用程序 1699.1.4  應(yīng)用程序事件 1709.2  事件執(zhí)行周期 1719.2.1  Startup應(yīng)用程序啟動事件 1719.2.2  Activated和Deactiveated事件——激活與取消激活 1729.2.3  DispatherUnhandledException事件——處理應(yīng)用程序未處理的異常 1739.2.4  SessionEnding事件——注銷或關(guān)閉系統(tǒng) 1749.2.5  Exit事件——退出應(yīng)用程序 1759.3  Application類的任務(wù) 1779.3.1  處理命令行參數(shù) 1779.3.2  訪問當(dāng)前的應(yīng)用程序 1789.3.3  單實(shí)例應(yīng)用程序 1819.4  小結(jié) 185第10章  WPF布局 18710.1   理解WPF布局 18710.1.1  WPF的布局原理 18710.1.2  布局的過程 18810.1.3  布局容器 18810.2   使用StackPanel進(jìn)行簡單地布局 18910.2.1  StackPanel示例 18910.2.2  StackPanel布局屬性 19110.3   使用WrapPanel和DockPanel 19310.3.1  使用WrapPanel控件布局 19310.3.2  使用DockPanel控件布局 19410.3.3  簡單對話框的實(shí)現(xiàn) 19610.4   Grid控件 19810.4.1  創(chuàng)建Grid控件 19810.4.2  調(diào)整行列尺寸 19910.4.3  編程創(chuàng)建Grid控件 20110.4.4  合并行和列 20310.4.5  窗體分割 20510.4.6  共享尺寸組 20810.4.7  使用UniformGrid控件 21210.5  基于坐標(biāo)布局的Canvas 21210.5.1  Canvas控件的使用方法 21310.5.2  Canvas的Z軸 21410.5.3  InkCanvas介紹 21410.6   小結(jié) 217第11章  內(nèi)容控件 21811.1  理解內(nèi)容控件 21811.1.1  什么是內(nèi)容控件 21811.1.2  Content屬性介紹 22011.1.3  內(nèi)容的對齊屬性 22211.2  內(nèi)容容器控件 22311.2.1  ScrollViewer滾動條控件 22311.2.2  GroupBox組合框和TabItem標(biāo)簽頁控件 22711.2.3  Expander可折疊控件 22911.3  裝飾控件 23211.3.1  Border邊框控件 23211.3.2  Viewbox自動縮放控件 23311.4  小結(jié) 235第12章  WPF依賴屬性和事件路由 23612.1  WPF中的樹 23612.1.1  邏輯樹和視覺樹 23612.1.2  編程遍歷樹結(jié)構(gòu) 23812.2  理解依賴屬性 23912.2.1  依賴屬性的概念 24012.2.2  定義依賴屬性 24212.2.3  依賴屬性示例 24412.2.4  共享依賴屬性 24812.2.5  注冊附加屬性 24912.3  理解事件路由 25012.3.1  路由事件的概念 25012.3.2  定義和注冊路由事件 25312.3.3  事件路由策略 25412.3.4  RoutedEventArgs類型的參數(shù) 25712.3.5  附加事件 25812.4  WPF中的事件 25912.4.1  生命周期事件 25912.4.2  鍵盤事件 26112.4.3  鍵盤焦點(diǎn) 26412.4.4  鍵盤狀態(tài) 26512.4.5  鼠標(biāo)事件 26612.4.6  捕捉鼠標(biāo) 27012.4.7  鼠標(biāo)拖放編程 27212.4.8  文件拖放示例 27512.5  小結(jié) 277第13章  標(biāo)準(zhǔn)控件 27813.1  控件基礎(chǔ) 27813.1.1  背景色和前景色畫刷 27813.1.2  透明度設(shè)置 28013.1.3  更改字體 28113.1.4  更改鼠標(biāo)光標(biāo) 28213.2  內(nèi)容控件 28613.2.1  Label標(biāo)簽控件 28613.2.2  Button控件 28713.2.3  CheckBox和RadioButton控件 29013.2.4  ToolTip提示控件 29113.2.5  使用ToolTipService對象ToolTip 29313.2.6  使用Popup控件 29513.3  文本控件 29813.3.1  TextBox控件 29913.3.2  選擇文本 30013.3.3  PasswordBox密碼框控件 30113.3.4  TextBlock控件 30313.4  列表控件 30513.4.1  ListBox列表框控件 30513.4.2  獲取ListBox選定項(xiàng) 30713.4.3  在ListBox中進(jìn)行多選 30913.4.4  ComboBox下拉列表框控件 31013.5  范圍控件 31313.5.1  ProgressBar進(jìn)度條控件 31313.5.2  Slider滑動條控件 31413.6  小結(jié) 317第14章  窗口與導(dǎo)航 31814.1  Windows類簡介 31814.1.1  Window類的基本屬性 31914.1.2  窗口的生命周期 32214.1.3  模式與非模式窗口 32414.1.4  窗口的定位和尺寸 32514.1.5  保存和恢復(fù)窗口位置 32614.2  對話框窗口 32714.2.1  窗口的宿主 32714.2.2  對話框模型 32814.2.3  MessageBox消息框 33014.2.4  通用對話框 33114.3  非矩形窗口 33314.3.1  圓角窗口 33414.3.2  圖形窗口 33514.3.3  調(diào)整非矩形窗口尺寸 33714.4  一個簡單的導(dǎo)航應(yīng)用程序示例 33814.5  基于頁面的用戶界面 34014.5.1  Page類簡介 34014.5.2  使用Hyperlink超級鏈接 34114.5.3  片段導(dǎo)航 34214.5.4  NavigationWindow導(dǎo)航窗口 34314.5.5  Frame頁面框架 34414.5.6  導(dǎo)航歷史記錄 34714.6  NavigationService導(dǎo)航服務(wù) 34814.6.1  編程控制導(dǎo)航 34814.6.2  導(dǎo)航生命期事件 35014.6.3  導(dǎo)航記錄管理 35314.6.4  使用頁函數(shù)PageFunction 35714.7  XAML瀏覽器應(yīng)用程序 36014.7.1  XBAP的特點(diǎn) 36114.7.2  創(chuàng)建XBAP應(yīng)用程序 36114.8  小結(jié) 362第15章  WPF資源、樣式和控件模板 36315.1  程序集資源 36315.1.1  添加資源 36315.1.2  獲取程序集資源 36415.2  對象資源 36515.2.1  資源集合 36615.2.2  靜態(tài)和動態(tài)資源 36815.2.3  非共享資源 36815.2.4  編程訪問資源 36915.2.5  應(yīng)用程序資源 36915.2.6  系統(tǒng)資源 37015.2.7  使用資源字典組織資源 37115.3  樣式基礎(chǔ) 37215.3.1  創(chuàng)建一個樣式對象 37315.3.2  在樣式中設(shè)置屬性 37415.3.3  根據(jù)指定的類型自動應(yīng)用樣式 37515.3.4  多級樣式 37615.3.5  綁定事件處理器 37715.4  樣式觸發(fā)器 37815.4.1  創(chuàng)建簡單觸發(fā)器 37815.4.2  創(chuàng)建事件觸發(fā)器 38115.4.3  數(shù)據(jù)觸發(fā)器 38115.5  控件模板 38315.5.1  理解控件模板 38415.5.2  一個按鈕模板示例 38415.5.3  模板的綁定 38615.5.4  模板觸發(fā)器 38715.6  小結(jié) 389第16章  形狀、變換和畫刷 39016.1  WPF圖形 39016.1.1  Shape類 39016.1.2  Rectangle和Ellipse類 39116.1.3  Stretch屬性 39216.1.4  Line直線對象 39316.1.5  Polyline多段線對象 39416.1.6  Polygon多邊形對象 39516.1.7  線帽和線連接點(diǎn) 39716.1.8  繪制虛線 39816.2  畫刷 39916.2.1  LinearGradientBrush線性漸變畫刷 39916.2.2  RadialGradientBrush徑向漸變畫刷 40116.2.3  ImageBrush圖像畫刷 40216.2.4  VisualBrush可視化對象畫刷 40416.2.5  OpacityMask不透明蒙板 40516.3  WPF變換 40716.3.1  應(yīng)用變換 40816.3.2  TranslateTransform移動變換 40916.3.3  RotateTransform旋轉(zhuǎn)變換 40916.3.4  ScaleTransform縮放變換 41016.3.5  SkewTransform扭曲變換 41116.3.6  TransformGroup組合變換 41216.4  位圖效果 41316.4.1  模糊 41416.4.2  凹凸效果 41516.4.3  浮雕效果 41616.4.4  發(fā)光和陰影 41716.5  小結(jié) 418第17章  幾何圖形、圖像和可視化層 41917.1  路徑和幾何圖形 41917.1.1  線型、矩形和橢圓幾何圖形 41917.1.2  使用GeometryGroup組合形狀 42017.1.3  使用CombinedGeometry結(jié)合形狀 42217.1.4  認(rèn)識PathGeometry對象 42317.1.5  用PathGeometry對象繪制直線 42417.1.6  用PathGeometry對象繪制弧線 42417.1.7  用PathGeometry對象繪制貝塞爾曲線 42517.1.8  使用幾何迷你語言 42617.1.9  幾何圖形的裁切 42717.2  繪圖 42817.2.1  繪制形狀 42817.2.2  繪制圖像 43017.2.3  組合繪制 43017.3  可視化層 43117.3.1  在Visual上繪圖 43217.3.2  DrawingVisual宿主容器 43317.3.3  使用命中測試 43517.4  小結(jié) 437第18章  WPF數(shù)據(jù)綁定 43818.1  數(shù)據(jù)綁定基礎(chǔ) 43818.1.1  綁定到元素屬性 43818.1.2  使用程序代碼創(chuàng)建綁定 43918.1.3  綁定多個屬性 44018.1.4  綁定的方向 44118.1.5  綁定更新 44318.1.6  綁定到非元素的對象 44418.2  數(shù)據(jù)庫綁定 44818.2.1  創(chuàng)建數(shù)據(jù)訪問組件 44818.2.2  實(shí)現(xiàn)數(shù)據(jù)實(shí)體對象 45018.2.3  顯示綁定對象 45018.2.4  更新數(shù)據(jù)庫 45218.3  小結(jié) 454第4篇  WF工作流編程第19章  WF編程入門 45619.1  WF基礎(chǔ) 45619.1.1  WF簡介 45619.1.2  WF的開發(fā)環(huán)境 45819.1.3  第一個工作流示例程序 45919.1.4  WF架構(gòu)簡介 46319.2  使用WorkflowRuntime和WorkflowInstance類 46419.2.1  理解WorkflowRuntime工作流引擎 46419.2.2  理解WorkflowInstance工作流實(shí)例 46719.3  工作流類型和創(chuàng)建模式 46919.3.1  WF工作流的類型 46919.3.2  一個簡單的狀態(tài)機(jī)工作流示例 46919.3.3  WF工作流的創(chuàng)建模式 47119.4  小結(jié) 472第20章  WF活動 47320.1  理解WF活動 47320.1.1  活動的類層次結(jié)構(gòu) 47320.1.2  活動條件類型 47420.2  使用WF的基本活動 47620.2.1  使用IfElseActivity活動 47720.2.2  使用WhileActivity活動 47820.2.3  使用ParalleActivity活動 47920.2.4  使用ReplicatorActivity活動 48220.2.5  使用ConditionedActivityGroup活動 48520.2.6  使用InvokeWorkflowActivity活動 48820.2.7  使用TerminateActivity活動 49120.2.8  使用SuspendActivity活動 49120.3  本地服務(wù)和事件驅(qū)動的活動 49320.3.1  理解和實(shí)現(xiàn)本地服務(wù) 49420.3.2  使用本地服務(wù)在宿主和工作流之間通信 49520.3.3  事件驅(qū)動的活動簡介 49820.3.4  EventDrivenActivity和ListenActivity使用示例 49920.3.5  使用EventHandlingScopeActivity活動 50220.4  小結(jié) 507第21章  WF服務(wù) 50821.1  WF服務(wù)基礎(chǔ) 50821.1.1  WF服務(wù)的分類 50821.1.2  默認(rèn)的服務(wù)類簡介 50921.2  WF持久化服務(wù) 51021.2.1  準(zhǔn)備數(shù)據(jù)庫 51021.2.2  創(chuàng)建工作流 51121.2.3  使用SqlWorkflowPersistenceService 51321.3  WF跟蹤服務(wù) 51921.3.1  使用工作流跟蹤服務(wù) 51921.3.2  跟蹤服務(wù)配置文件 52321.4  小結(jié) 524第22章  基于ASP.NET的工作流批核系統(tǒng) 52522.1  工作流批核系統(tǒng)簡介 52522.1.1  系統(tǒng)運(yùn)行效果 52522.1.2  系統(tǒng)基本結(jié)構(gòu) 52822.2  Workflows工作流項(xiàng)目 52922.2.1  基于事件驅(qū)動的活動實(shí)現(xiàn) 52922.2.2  UserActivity用戶活動實(shí)現(xiàn) 53122.2.3  SaveWorkItems自定義活動實(shí)現(xiàn) 53722.2.4  ApprovedWorkItemWorkflow工作流實(shí)例的實(shí)現(xiàn) 53822.2.5  工作流項(xiàng)目幫助類的實(shí)現(xiàn) 54122.3  ASP.NET宿主應(yīng)用程序項(xiàng)目 54222.3.1  初始化工作流運(yùn)行時引擎 54322.3.2  創(chuàng)建工作流實(shí)例 54422.3.3  編輯和審核工作申請表單 54622.4  小結(jié) 549第5篇  WCF開發(fā)第23章  SOA和WCF基礎(chǔ)介紹 55223.1  SOA架構(gòu)介紹 55223.1.1  軟件設(shè)計(jì)思想發(fā)展的簡要介紹 55223.1.2  什么是SOA 55323.2  WCF簡要介紹 55423.2.1  什么是WCF 55423.2.2  WCF體系框架 55523.2.3  WCF基礎(chǔ)概念介紹 55723.3  第一個WCF程序 55923.3.1  HelloWorld服務(wù)契約的定義 55923.3.2  HelloWorld的宿主程序 56123.3.3  訪問HelloWorld服務(wù)的客戶端程序 56323.4  小結(jié) 565第24章  通道模型和綁定 56624.1  WCF通道模型 56624.1.1  WCF通道模型概述 56624.1.2  消息交換模式和通道形狀 56724.1.3  數(shù)據(jù)報(bào)模式 56724.1.4  請求-響應(yīng)模式 57024.1.5  雙工模式 57324.1.6  帶會話的數(shù)據(jù)報(bào)模式、請求-響應(yīng)模式和雙工模式 57424.1.7  通道形狀的改變 57524.1.8  通道性狀和上層服務(wù)協(xié)議 57624.1.9  通道管理器 57724.1.10  ICommunicationObject接口和狀態(tài)改變 57724.2  標(biāo)準(zhǔn)綁定介紹 58124.2.1  綁定的基本概念 58124.2.2  標(biāo)準(zhǔn)綁定 58124.2.3  設(shè)置綁定的方式 58224.2.4  如何選擇綁定 58324.3  本機(jī)WCF-WCF交互的綁定和地址 58524.3.1  場景概述 58524.3.2  IPC基本概念 58524.3.3  使用netNamedPipeBinding 58624.3.4  netNamedPipeBinding的地址和配置 58724.3.5  netNamedPipeBinding特點(diǎn)總結(jié) 58924.4  跨主機(jī)WCF-WCF交互的綁定和地址 58924.4.1  場景概述 59024.4.2  TCP協(xié)議概述 59024.4.3  Net.Tcp端口共享 59124.4.4  使用netTcpBinding 59124.4.5  netTcpBinding的地址和配置 59224.4.6  netTcpBinding特點(diǎn)總結(jié) 59524.5  與WS-I Basic Web服務(wù)進(jìn)行交互的綁定和地址 59524.5.1  場景概述 59524.5.2  SOAP協(xié)議概述 59624.5.3  使用basicHttpBinding 59724.5.4  basicHttpBinding的地址和配置 59824.5.5  basicHttpBinding特點(diǎn)總結(jié) 60024.6  與改進(jìn)Web服務(wù)進(jìn)行交互的綁定和地址 60024.6.1  場景概述 60124.6.2  改進(jìn)Web服務(wù)協(xié)議概述 60124.6.3  使用wsHttpBinding 60624.6.4  wsHttpBinding的地址和配置 60724.6.5  wsHttpBinding特點(diǎn)總結(jié) 60924.6.6  使用wsDualHttpBinding 61024.6.7  wsDualHttpBinding的地址和配置 61124.6.8  wsDualHttpBinding特點(diǎn)總結(jié) 61324.6.9  使用ws2007HttpBinding 61324.7  使用脫機(jī)模式進(jìn)行消息交互的綁定和地址 61324.7.1  場景概述 61424.7.2  MSMQ協(xié)議概述 61424.7.3  使用netMsmqBinding 61524.7.4  netMsmqBinding的地址和配置 61624.7.5  netMsmqBinding特點(diǎn)總結(jié) 61924.7.6  使用msmqIntegrationBinding 61924.7.7  msmqIntegrationBinding的地址和配置 62024.7.8  msmqIntegrationBinding特點(diǎn)總結(jié) 62224.8  小結(jié) 623第25章  定義服務(wù):契約編程 62425.1  契約定義和分類 62425.1.1  什么是契約 62425.1.2  契約分類 62425.2  服務(wù)契約 62525.2.1  服務(wù)契約和WSDL 62525.2.2  服務(wù)契約的重載問題 62725.2.3  定義請求-響應(yīng)操作 62925.2.4  定義單程操作 63025.2.5  定義雙程操作 63225.2.6  WCF中事件的實(shí)現(xiàn) 64025.3  數(shù)據(jù)契約 64425.3.1  數(shù)據(jù)契約和XSD 64425.3.2  使用DataContract特性定義數(shù)據(jù)契約 64625.3.3  數(shù)據(jù)契約的繼承 64925.3.4  已知類型的定義 65025.3.5  數(shù)據(jù)契約的等效性 65525.3.6  數(shù)據(jù)契約的版本控制 65825.3.7  定義必需的數(shù)據(jù)成員 66025.3.8  數(shù)據(jù)默認(rèn)值的發(fā)送 66225.3.9  數(shù)組和集合的處理 66325.4  消息契約 66725.4.1  消息契約基本概念 66725.4.2  強(qiáng)類型消息 66825.4.3  弱類型消息 67425.5  錯誤處理和錯誤契約 67825.5.1  SOAP消息的錯誤處理 67825.5.2  服務(wù)端未捕獲的異常 67925.5.3  包含詳細(xì)異常信息 68125.5.4  捕捉服務(wù)異常 68225.5.5  FaultCode和FaultReason的使用 68425.5.6  使用錯誤契約和FaultException 68525.6  小結(jié) 688第26章  WCF中的行為 68926.1  實(shí)例管理 68926.1.1  實(shí)例管理的設(shè)置 68926.1.2  PerCall實(shí)例策略 69026.1.3  PerSession實(shí)例策略和會話 69226.1.4  Single實(shí)例策略 69526.2  并發(fā)管理 69826.2.1  并發(fā)管理的設(shè)置 69826.2.2  Single并發(fā)模式 69926.2.3  Multiple并發(fā)模式 70126.2.4  Reentrant并發(fā)模式 70326.3  元數(shù)據(jù)的發(fā)布 70626.3.1  HTTP-GET方式發(fā)布元數(shù)據(jù) 70626.3.2  MEX終節(jié)點(diǎn)方式發(fā)布元數(shù)據(jù) 70826.4  事務(wù)管理 71026.4.1  事務(wù)的基本概念和特性 71026.4.2  單服務(wù)事務(wù) 71026.4.3  分布式事務(wù) 71526.4.4  事務(wù)協(xié)議和事務(wù)管理器 72126.5  小結(jié) 723第27章  安全 72427.1  常用概念介紹 72427.1.1  身份驗(yàn)證 72427.1.2  授權(quán) 72527.1.3  保密性 72527.1.4  完整性 72527.1.5  憑據(jù) 72527.2  傳輸安全性 72627.2.1  傳輸安全性的三要素 72627.2.2  WCF支持的傳輸安全模式 72627.2.3  傳輸安全模式的配置 72727.2.4  Transport安全模式下的憑證 72827.2.5  Message安全模式下的憑證 72927.3  局域網(wǎng)內(nèi)Windows平臺系統(tǒng)的安全性 72927.3.1  場景分析 72927.3.2  服務(wù)定義 73027.3.3  身份認(rèn)證 73227.3.4  授權(quán) 73427.4  跨Internet系統(tǒng)的安全性 73827.4.1  場景概述和綁定選擇 73827.4.2  消息安全 73927.4.3  身份認(rèn)證 74227.4.4  授權(quán) 74427.5  安全機(jī)制的日志和跟蹤 74527.6  小結(jié) 746第28章  自動點(diǎn)滴管理系統(tǒng) 74728.1  需求分析 74728.1.1  系統(tǒng)介紹 74728.1.2  客戶端功能 74728.1.3  服務(wù)端功能 74828.2  系統(tǒng)設(shè)計(jì) 74828.2.1  服務(wù)邊界和接口 74828.2.2  傳輸和寄宿的設(shè)計(jì) 74928.2.3  界面的設(shè)計(jì) 74928.3  系統(tǒng)實(shí)現(xiàn) 75028.3.1  服務(wù)契約的定義 75028.3.2  數(shù)據(jù)契約的定義 75128.3.3  服務(wù)的實(shí)現(xiàn) 75628.3.4  控制臺實(shí)現(xiàn) 76228.3.5  客戶端實(shí)現(xiàn) 77028.4  運(yùn)行和測試 77828.5  小結(jié) 778

章節(jié)摘錄

第1章  .NET框架和Visual Studio 2008開發(fā)工具C#(讀作C Sharp)語言是.NET框架重點(diǎn)推出的開發(fā)語言,其具備C++語言的安全性和Visual Basic(以下簡稱VB)語言的快速開發(fā)特點(diǎn),是目前最流行的開發(fā)語言之一。因?yàn)镃#語言的類庫全部封裝在.NET框架中,所以在講解具體的C#開發(fā)語言前,本章會先介紹.NET 框架,其目前的最新版本是3.5。在介紹完框架后,為了方便程序開發(fā),本章還會簡單介紹C#的開發(fā)工具Visual Studio 2008簡稱VS 2008。1.1  .NET 3.5框架一覽.NET 3.5是Microsoft推出的最新開發(fā)框架,其支持目前最流行的開發(fā)語言VB和C#,也封裝了一些常用的類庫和組件,通過此框架,可以開發(fā)和運(yùn)行常見的Windows程序和Web程序。本節(jié)簡要介紹框架的內(nèi)容和運(yùn)行機(jī)制。%注意:.NET 3.5框架之前有個.NET 3.0框架,但并沒有流行起來。.NET 3.5包含了.NET 2.0框架和.NET 3.0框架的所有內(nèi)容。1.1.1  框架包含的開發(fā)語言Java語言也是很流行的一種語言,但其必須運(yùn)行在虛擬機(jī)上,這樣可以實(shí)現(xiàn)一些跨平臺的應(yīng)用。而現(xiàn)在最新版本的Visual C# 2008和Visual Basic 2008則必須運(yùn)行在.NET 3.5框架上。如果要在服務(wù)器上運(yùn)行Visual C# 2008的程序,則必須在服務(wù)器上安裝.NET 3.5框架。%提示:Microsoft最新的操作系統(tǒng)Vista自帶.NET 3.0 框架。雖然.NET 3.5是一個成熟的框架,但其底層類庫依然調(diào)用的是.NET 2.0以前封裝好的所有類。圖1.1所示的是.NET 3.5框架的基本組成,最上層就是其支持的開發(fā)語言。在.NET 3.5支持的開發(fā)語言中,C#和VB最流行。VB一般用來快速開發(fā),在小型Windows應(yīng)用系統(tǒng)中最常用。C#是Microsoft重點(diǎn)推出的開發(fā)語言,其結(jié)合了C和C++的一些優(yōu)點(diǎn),然后又去除了指針等難于理解的概念,是一門易于上手和開發(fā)的語言。圖1.1  .NET 3.5的框架基本組成1.1.2  C#開發(fā)語言的特點(diǎn)C#是最流行的開發(fā)語言。相比較其他語言,其具備簡單、方便、快速開發(fā)等優(yōu)點(diǎn),主要特色如下所示。* C#語法與C、C++類似,適合剛畢業(yè)的學(xué)生入門。* C#支持面向?qū)ο箝_發(fā),并有.NET底層類庫的支持,可以輕松創(chuàng)建對象。* C#的高開發(fā)效率。C#的開發(fā)工具VS 2005支持拖放式添加控件,開發(fā)人員可以輕松完成桌面的布局。* C#通過內(nèi)置的服務(wù),使組件可以轉(zhuǎn)化為XML網(wǎng)絡(luò)服務(wù)。這樣就可以被其他程序調(diào)用,也可以被網(wǎng)絡(luò)上其他機(jī)器的其他程序調(diào)用,實(shí)現(xiàn)了一次創(chuàng)造、重復(fù)利用的高效開發(fā)模式。* XML語言是一種最流行的數(shù)據(jù)描述語言。C#提供了對XML的強(qiáng)大支持,可以輕松地創(chuàng)建XML,也可以將XML數(shù)據(jù)應(yīng)用到程序中。* 自動的資源回收功能,不用再像C++一樣,為程序運(yùn)行中的內(nèi)存管理傷腦筋。* 類型安全是編寫代碼優(yōu)先考慮的問題。C#提供的類型安全機(jī)制,可以避免一些常見的類型問題,如類型轉(zhuǎn)換、數(shù)組類型越界等。* 在.NET框架中,C#可以自由地和其他語言(VB、J#等)進(jìn)行轉(zhuǎn)換。1.1.3  C#的運(yùn)行機(jī)制如果只是學(xué)習(xí)用C#編寫一段程序,那很簡單,短短幾行代碼便可以實(shí)現(xiàn);而了解其真正實(shí)現(xiàn)的原理,則有助于開發(fā)出安全、便于重構(gòu)的高性能程序。.NET 框架下所有的語言,實(shí)際上都是把代碼翻譯成中間語言(簡稱MSIL),然后生成標(biāo)準(zhǔn)程序集。無論是VB語言還是C#語言,它們使用的命名空間和類庫都是中間語言書寫的,所以能夠相互操作和相互調(diào)用。從本質(zhì)上講,就是在個別語言之下加上了一個共同解釋。.NET中的CLR(公共語言運(yùn)行時),用來運(yùn)行生成的MSIL,其實(shí)就是將MSIL轉(zhuǎn)換成COM以執(zhí)行程序。目前CLR只能在Windows 平臺上運(yùn)行。綜合上面所述,下面就是一個C#程序編譯運(yùn)行的簡單步驟。(1)將編寫的C#程序翻譯成中間語言。(2)經(jīng)過C#編譯器生成程序集(*.exe/*.dll)。編譯可以使用.NET框架提供的CSC命令,也可以在開發(fā)工具Visual Studio中自動編譯。(3)由公共語言運(yùn)行庫(CLR)執(zhí)行程序集,生成本地代碼。其中CLR的工作流程如圖1.2所示。圖1.2  CLR的工作流程1.1.4  C#的類庫框架.NET 3.5 提供了開發(fā)所有應(yīng)用需要的類庫,但其底層的基礎(chǔ)類庫依然是.NET 2.0的類庫。類庫的主要分類如圖1.3所示。在學(xué)習(xí)類庫的時候,不需要全部掌握其應(yīng)用技術(shù)。了解類庫的基本架構(gòu)和實(shí)現(xiàn)原理才是最重要的。圖1.3  類庫的主要分類1.2  Visual Studio 2008 開發(fā)界面完善的開發(fā)界面可幫助開發(fā)人員提高開發(fā)效率,這也是VS系列開發(fā)工具最大的特點(diǎn),其完全支持拖動方式設(shè)計(jì)窗體布局,還可以自動生成各種窗體設(shè)計(jì)代碼。本例從整體布局方面入手,介紹Visual Studio 2008 IDE開發(fā)界面。1.2.1  Visual Studio 2008界面一覽選擇“開始”|“所有程序”|“Microsoft Visual Studio 2008”命令,打開VS 2008的開始界面,如圖1.4所示。圖中標(biāo)注出了需要注意的各個區(qū)域,其中開始學(xué)習(xí)文檔。提供一些入門案例和文檔。讀者除了看書之外,也可以經(jīng)常閱讀這些文檔,有助于了解一些更深入的知識點(diǎn)。VS開發(fā)新聞區(qū)域,如果連接了網(wǎng)絡(luò),則會顯示一些最新的VS開發(fā)文檔和注意事項(xiàng)。選擇“文件”|“新建”|“項(xiàng)目”命令,打開VS 2008提供的“新建項(xiàng)目”對話框,如圖1.5所示。其中一定要注意“選擇框架版本”下拉列表框,這里默認(rèn)是“.NET Framework 3.5”選項(xiàng),但其支持.NET 3.0和.NET 2.0框架版本。如果要開發(fā)舊版本的程序,可通過此列表選擇。            圖1.4  VS 2008的開始界面                      圖1.5 “新建項(xiàng)目”對話框本例以開發(fā)Windows窗體應(yīng)用程序?yàn)槔?,進(jìn)入正式開發(fā)界面。選擇“模板”區(qū)域中的“Windows窗體應(yīng)用程序”選項(xiàng),在項(xiàng)目屬性區(qū)域設(shè)置項(xiàng)目的名稱和保存位置。單擊“確定”按鈕即可進(jìn)入VS 2008的開發(fā)界面。這個界面在前面已經(jīng)提到過,本處不再給出圖示。1.2.2  菜單欄菜單欄位于開發(fā)界面的頂端,提供一系列默認(rèn)的工具和可執(zhí)行操作,如數(shù)據(jù)庫配置工具和測試工具等。本節(jié)只是簡要介紹每個菜單的功能,并不學(xué)習(xí)具體工具的使用。希望讀者對VS 2008的整體功能有一個概括的了解。* “文件”菜單:包括項(xiàng)目打開、保存、導(dǎo)出等。和普通軟件的文件菜單沒有多少區(qū)別。* “編輯”菜單:包括常用的查找、替換、刪除等操作。* “視圖”菜單:視圖就是從整體上對開發(fā)界面進(jìn)行布局,包括一些常用的提示窗口。此菜單非常重要,如果顯示一些錯誤提示窗口和資源管理窗口,則開發(fā)人員可以直觀地了解程序的錯誤,以及程序所包括的所有文件。最常用的視圖窗口有“服務(wù)器資源管理器”、“解決方案資源管理器”、“錯誤列表”、“工具箱”和“屬性窗口”,這5個窗口盡量在每次打開開發(fā)界面時自動打開,以方便瀏覽整個項(xiàng)目的布局。* “項(xiàng)目”菜單:是對整個項(xiàng)目內(nèi)容的管理。例如,在項(xiàng)目中添加新的窗體,引用一些其他項(xiàng)目程序,以及查看項(xiàng)目的分布式系統(tǒng)關(guān)系圖。* “生成”菜單:是對整個項(xiàng)目的編譯、發(fā)布和發(fā)布配置。在項(xiàng)目開發(fā)完畢后,可借助此菜單,實(shí)現(xiàn)項(xiàng)目的編譯和打包。* “調(diào)試”菜單:是開發(fā)人員在編寫代碼時,用于執(zhí)行、調(diào)試、判斷代碼,還可以在代碼中設(shè)置斷點(diǎn),以查看變量的結(jié)果。此菜單是開發(fā)人員常用而且必須了解的菜單。* “數(shù)據(jù)”菜單:是對項(xiàng)目中當(dāng)前的數(shù)據(jù)源進(jìn)行管理,這些數(shù)據(jù)源包括數(shù)據(jù)庫、各種服務(wù)和對象等。如果項(xiàng)目中沒有數(shù)據(jù)源,也可以通過此菜單實(shí)現(xiàn)數(shù)據(jù)源的添加和配置。* “格式”菜單:用來調(diào)整窗體中各個控件的布局,如對齊、控件間距、大小等??梢淮芜x擇多個控件,進(jìn)行整體操作。* “工具”菜單:提供VS 2008可以支持的所有工具。如果要用菜單中沒有的工具,還可以自行添加。這些常見的工具包括代碼段管理器、宏和服務(wù)器連接等。* “測試”菜單:可能很多讀者已經(jīng)聽說過NUnit測試工具,以前它是一個單獨(dú)的為.NET提供測試的工具,但現(xiàn)在VS 2008集成了這種工具,開發(fā)人員可以使用此工具對項(xiàng)目和類庫進(jìn)行各種測試,可以及時檢查代碼錯誤。* “窗口”菜單:提供一些窗口的布局操作,如隱藏、浮動、拆分等,但它不太       常用。* “幫助”菜單:這里提供了前面安裝的MSDN說明文檔的一些操作。%說明:使用VS 2008前,一定要先了解這些菜單內(nèi)容,知道VS 2008都提供了哪些方便的操作。1.2.3  工具欄VS 2008提供了多達(dá)40多種的工具欄,可實(shí)現(xiàn)對數(shù)據(jù)庫、報(bào)表、Office文檔、常用操作等的各種操作。為了讓讀者更方便學(xué)習(xí),本例只介紹最簡單、最常用的幾種工具欄。選擇“視圖”|“工具欄”命令可以打開這些工具欄。* “標(biāo)準(zhǔn)”工具欄。和其他軟件的標(biāo)準(zhǔn)工具欄一樣,提供常見的保存、打開、新建按鈕。其中保存按鈕有兩個。按鈕用來保存當(dāng)前打開的單個文檔,而按鈕用來保存當(dāng)前項(xiàng)目所有修改后的文檔。* “布局”工具欄。用來對窗體中的各個設(shè)計(jì)組件進(jìn)行統(tǒng)一布局,如左對齊、居中等。此工具欄在開發(fā)Windows窗體程序時非常重要,而開發(fā)Web程序則不需要。* “調(diào)試”工具欄。這個工具欄是每個開發(fā)人員必須顯示的工具欄,用其可以實(shí)現(xiàn)對代碼的執(zhí)行、中斷、逐行執(zhí)行等功能。當(dāng)鼠標(biāo)指針指向某按鈕時,還會提示這個按鈕的快捷鍵。開發(fā)人員如果熟記這些快捷鍵,則可以用鍵盤提高操作速度。執(zhí)行代碼的快捷鍵是“F5”鍵,屬于最最常用的代碼操作。* “文本編輯器”工具欄。在打開窗體設(shè)計(jì)視圖時,此工具欄處于不可用狀態(tài)。因?yàn)槠渲恢С执a文本的編輯,包括代碼的縮進(jìn)、注釋、標(biāo)簽等。%提示:針對Windows程序開發(fā)和Web程序開發(fā),所使用的工具欄并不相同。讀者可根據(jù)自己的項(xiàng)目屬性,來決定都顯示哪些工具欄。1.2.4  工具箱工具箱包含了VS 2008提供的常用控件,如按鈕、下拉列表框、列表框等。因?yàn)閂S 2008 提供的控件非常多,所以這些組件被分成了以下常見的幾組。* 所有Windows窗體:包括創(chuàng)建普通Windows窗體所需要的所有標(biāo)準(zhǔn)組件,如按鈕、文本框、狀態(tài)欄、分割條等。* 容器:可以包裝其他控件的控件,如Panel、TabControl等。* 菜單和工具欄:用來設(shè)計(jì)窗體布局的一些復(fù)雜控件,可實(shí)現(xiàn)Windows窗體中的菜單和工具條。* 數(shù)據(jù):包括數(shù)據(jù)顯示控件和數(shù)據(jù)源配置控件。* 組件:最復(fù)雜的一種控件,包括事件日志管理、進(jìn)程管理和目錄管理等。* 打?。禾峁┒鄠€實(shí)現(xiàn)打印功能常見的對話框,如打印對話框、打印預(yù)覽對話框等。* 對話框:是Windows中常見到的一些對話框,如顏色選擇對話框、文件打開和保存對話框等。* 報(bào)表:提供了水晶報(bào)表的一些控件。%提示:在代碼視圖中,工具箱中的組件為不可用狀態(tài)。1.2.5  屬性窗口屬性窗口可用來顯示項(xiàng)目、窗體、控件、數(shù)據(jù)源等所有可視資源的屬性。如果要查看某個按鈕的名字和字體等,可通過打開屬性窗口來設(shè)置。按下快捷鍵F4就可以打開屬性窗口,其效果如圖1.6所示。在圖1.6選中的區(qū)域中,有一個按鈕,用來設(shè)置控件的事件。如果要查看的資源屬性不包括事件,則不會顯示此按鈕。如果要顯示項(xiàng)目的屬性,可先選中項(xiàng)目,然后按下F4鍵,則自動打開項(xiàng)目的屬性,可以在此處設(shè)置項(xiàng)目的調(diào)試方式和保存位置等。1.2.6  解決方案資源管理器解決方案資源管理器就類似于Windows操作系統(tǒng)的資源管理器??梢栽诖舜翱谙虏榭串?dāng)前項(xiàng)目所包含的所有資源,如文件夾、類文件和數(shù)據(jù)文件等,如圖1.7所示。                        圖1.6  屬性窗口                             圖1.7  解決方案資源管理器圖1.7所示是一個標(biāo)準(zhǔn)的Windows應(yīng)用程序文檔,其中默認(rèn)生成一個“Form1.cs”文件。這是一個窗體文件,包括兩部分:設(shè)計(jì)和源代碼。還有一個類文件“Program.cs”,用來設(shè)計(jì)當(dāng)前程序的入口?!耙谩蔽募A下包含當(dāng)前程序引用的其他程序集的內(nèi)容。如果要引用網(wǎng)絡(luò)上下載的一些組件,則可以右擊此文件夾,在彈出的快捷菜單中選擇“添加引用”命令來添加這些組件。解決方案資源管理器在系統(tǒng)中被保存為一個完整的文檔,默認(rèn)擴(kuò)展名為.sln。該解決方案下可以包含多種項(xiàng)目,既可以包含Windows項(xiàng)目,也可以包含Web項(xiàng)目,還可以在Web項(xiàng)目中引用Windows項(xiàng)目。%提示:對于一個比較龐大的項(xiàng)目,首先設(shè)計(jì)好整體解決方案,然后依次添加各個項(xiàng)目。1.2.7  服務(wù)器資源管理器服務(wù)器資源管理器以前并不常用,但在VS 2008中,其功能被徹底地挖掘出來。因?yàn)閂S 2008提供了LINQ to SQL類,此類必須依靠數(shù)據(jù)源才可以生成數(shù)據(jù)庫表的映射類,而數(shù)據(jù)源的管理就在服務(wù)器資源管理器中。選擇“視圖”︱“服務(wù)器資源管理器”命令,打開服務(wù)器資源管理器,如圖1.8所示。從圖1.8中可以看出,VS 2008主要提供兩種資源:服務(wù)器和數(shù)據(jù)連接。服務(wù)器用來連接當(dāng)前可以連接到的所有機(jī)器,而數(shù)據(jù)連接可以連接SQL Server 數(shù)據(jù)庫中的所有數(shù)據(jù)表。默認(rèn)生成的數(shù)據(jù)連接名稱為“機(jī)器名+數(shù)據(jù)庫名”。%提示:可通過右擊圖1.8中的“數(shù)據(jù)連接”選項(xiàng),實(shí)現(xiàn)新數(shù)據(jù)連接的添加。1.3  創(chuàng)建C#應(yīng)用程序本章開始進(jìn)入開發(fā)的初始階段,了解了VS 2008的界面和功能后,通過創(chuàng)建一個簡單的程序,來學(xué)習(xí)如何在VS 2008中開發(fā)真正的項(xiàng)目。因?yàn)閂S 2008提供開發(fā)不同項(xiàng)目的模板,所以本節(jié)特別提供了3種常見的應(yīng)用程序類型:控制臺應(yīng)用程序、Windows應(yīng)用程序和Web應(yīng)用程序。1.3.1  控制臺應(yīng)用程序(Console)控制臺應(yīng)用程序是沒有界面的程序,運(yùn)行效果在DOS窗口中,一般用來執(zhí)行后臺代碼。選擇“文件”︱“新建”︱“項(xiàng)目”命令,打開“新建項(xiàng)目”對話框。選擇模板中的“控制臺應(yīng)用程序”選項(xiàng),單擊“確定”按鈕,就創(chuàng)建了一個簡單的控制臺應(yīng)用程序,如圖1.9所示。主要包括代碼輸入?yún)^(qū)、解決方案資源管理器和項(xiàng)目屬性3個部分。從解決方案資源管理器中可以看出,控制臺應(yīng)用程序只有一個文件Program.cs。此文件包含一個類Program,并且此類中包含一個默認(rèn)的方法Main。此方法是所有應(yīng)用程序的入口處,一定要注意此方法為靜態(tài)屬性static。在此方法內(nèi)輸入如下代碼,用來輸出一段很簡單的字符串“中國歡迎你”。注意結(jié)束語句用分號。static void Main(string[] args)   {       Console.WriteLine("中國歡迎你");   }按下Ctrl+F5組合鍵運(yùn)行程序,則會彈出一個DOS窗口,并輸出字符串“中國歡迎你”,如圖1.10所示。              圖1.9  控制臺應(yīng)用程序開發(fā)界面                  圖1.10  控制臺應(yīng)用程序輸出%提示:按下Ctrl+F5鍵是運(yùn)行程序時不進(jìn)行調(diào)試,而按下F5鍵則是啟動程序進(jìn)行調(diào)試。如果按下F5鍵可能看不到這個運(yùn)行的DOS窗口。1.3.2  Windows 應(yīng)用程序(Forms)Windows 應(yīng)用程序是常見的C/S程序,也就是服務(wù)器上安裝主程序,然后在各個客戶端機(jī)器上安裝子程序,調(diào)用主程序的內(nèi)容。一般會在各個客戶端機(jī)器上安裝開啟主程序的服務(wù)。這個一般用于內(nèi)部網(wǎng)絡(luò),忽略網(wǎng)速的影響。在VS 2008中創(chuàng)建Windows 應(yīng)用程序的步驟如下所示。(1)選擇“新建”|“文件”|“項(xiàng)目”命令,打開“新建項(xiàng)目”對話框。選擇“Windows應(yīng)用程序”選項(xiàng),單擊“確定”按鈕。前面已經(jīng)介紹過新建項(xiàng)目的界面,本處不再給出       圖示。(2)打開Form1.cs文件,自動打開的是其設(shè)計(jì)界面。按下F7鍵就可以進(jìn)入窗體的代碼視圖。(3)在代碼視圖中,默認(rèn)生成的代碼如下所示。其中,using用來引用本例需要的一些底層類庫,而namespace是本項(xiàng)目所在的命名空間。本窗體的名字是Form1,其實(shí)也是一個類。using System;using System.Windows.Forms;//省略部分引用…………………………………………………namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {        }    }}(4)Form1_Load是在加載窗體后觸發(fā)的事件,本例要輸出的內(nèi)容就寫在此事件中。在此處輸入如下代碼,其中,MessageBox是System.Windows.Forms的一個類,用來彈出一個對話框。而Show是此類的一個方法。MessageBox.Show("中國歡迎你");(5)按下F5鍵運(yùn)行此項(xiàng)目,結(jié)果如圖1.11所示。圖1.11  Windows應(yīng)用程序輸出%注意:運(yùn)行程序后彈出的對話框一定會在窗體之前顯示,因?yàn)樵谳敵稣Z句“MessageBox.Show”時,加載窗體的事件還沒有完成。1.3.3  ASP.NET 3.5網(wǎng)站ASP.NET 3.5網(wǎng)站就是常說的Web程序,也是B/S結(jié)構(gòu)的一種程序,其將主程序布置在服務(wù)器上。而客戶端機(jī)器只要有瀏覽器就可以了,不需要安裝和設(shè)計(jì)任何單獨(dú)的程序。ASP.NET程序的版本一般隨著.NET 框架的版本變化而變化。例如,在.NET 2.0下,通常稱為ASP.NET 2.0應(yīng)用程序;而在.NET 3.5版本下,則通常稱為ASP.NET 3.5應(yīng)用程序。本例要創(chuàng)建一個輸出“中國歡迎你”的Web頁面,實(shí)現(xiàn)步驟如下所示。(1)選擇“文件”|“新建”|“網(wǎng)站”命令,打開“新建網(wǎng)站”對話框,如圖1.12              所示。(2)在模板區(qū)選擇“ASP.NET網(wǎng)站”選項(xiàng),其他使用默認(rèn)設(shè)置。然后單擊“確定”按鈕,打開Web程序的開發(fā)界面,如圖1.13所示。          圖1.12  “新建網(wǎng)站”對話框                      圖1.13  Web程序的開發(fā)界面(3)默認(rèn)生成一個Default.aspx文件,這是一個默認(rèn)頁面,其后臺代碼保存在Default.aspx.cs中。項(xiàng)目中還生成一個web.config文件,用來配置網(wǎng)站的一些安全和個性化設(shè)置,如是否啟用角色管理、是否使用Cookie等。%注意:Default.aspx保存前臺代碼,而Default.aspx.cs保存后臺代碼。(4)打開Default.aspx.cs后臺類文件,其默認(rèn)代碼如下所示。其中,關(guān)鍵字partial表示此處的類“_Default”,僅僅是該類的一部分,還有一部分用來表示界面的內(nèi)容,并不在此處顯示。using System;using System.Web.UI;//省略部分引用……………………public partial class _Default : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {    }}(5)Page_Load是頁面加載時觸發(fā)的事件,在此處輸入下面的代碼,用來在頁面中輸出字符串。Response.Write("中國歡迎你");(6)按下F5鍵運(yùn)行程序,效果如圖1.14所示??梢钥吹竭\(yùn)行效果顯示在IE瀏覽        器中。圖1.14  ASP.NET 3.5應(yīng)用程序輸出1.4  小    結(jié)本章首先介紹了.NET框架的組成和原理,然后從全局方面了解VS 2008的功能。介紹了VS 2008的界面、菜單欄、工具欄、窗口和工具箱等,最后學(xué)習(xí)如何使用VS 2008提供的幫助功能。這有利于初學(xué)者快速了解.NET的一些類庫,因?yàn)檫@些幫助文檔提供了中文的幫助說明和應(yīng)用案例。本章最后通過3個簡單的案例,從不同應(yīng)用程序的角度學(xué)習(xí)了如何真正地使用VS 2008進(jìn)行項(xiàng)目開發(fā)。

編輯推薦

  超值光盤內(nèi)容:  隨書附贈微軟Visual Studio 2008學(xué)習(xí)版安裝光盤  6小時多媒體視頻講解  資深.NET程序員,全新視角,解讀.NET3.5框架的最新技術(shù)趨勢  深入剖析.NET3.5框架的四大開發(fā)技術(shù)及.NET3.5框架的底層機(jī)制

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    精通C# 3.0與.NET 3.5高級編程 PDF格式下載


用戶評論 (總計(jì)9條)

 
 

  •   看了30多頁,講C#部分講得亂七八糟,什么都是一筆帶過,一點(diǎn)具體內(nèi)容都沒有。我覺得這本書應(yīng)該給系統(tǒng)的學(xué)過C#,還不了解.NET3.5特性的朋友看。又要花錢買多一本了,作孽?。。。?/li>
  •   作為教材估計(jì)你永遠(yuǎn)學(xué)不會C#和.NET3.5了,不過發(fā)現(xiàn)做為手冊還是不錯的,主要是比較全,特別是一些復(fù)雜生僻的參數(shù)都有涉及。
  •   講的太籠統(tǒng),不夠深入。一般般,不建議購買。
  •   這個當(dāng)手冊很好哦,簡單只是多。
  •   功能介紹的還是比較全的, 都能有一個了解~~推薦下~:)
  •   幫人代買,還不錯啦
  •   內(nèi)容很深奧,零基礎(chǔ)的人看后,估計(jì)得請教一下別人。
  •   內(nèi)容易懂,是學(xué).NET3.5必備的經(jīng)典呀。書中關(guān)于WF的內(nèi)容介紹得較少,也許是因?yàn)閷?shí)際用到的也比較少吧,呵呵。VS2008與數(shù)據(jù)庫連接已經(jīng)做得很好了,這本書也只介紹了LINQ,如果想用更快捷的方法,還是得參考一下其它的資料。這是一本十分適合潛心學(xué)習(xí)的書!
  •   目前為止看到C#3.0中比較好了。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7