[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • C#程序設計(第二版)
    該商品所屬分類:研究生 -> 工學
    【市場價】
    552-800
    【優惠價】
    345-500
    【作者】 王賢明、谷瓊、胡智文 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學圖書  計算機/網絡  程序設計  CC++C#VCVC++ 
    【出版社】清華大學出版社 
    【ISBN】9787302454076
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:32開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302454076
    叢書名:21世紀高等學校計算機專業實用規劃教材

    作者:王賢明、谷瓊、胡智文
    出版社:清華大學出版社
    出版時間:2017年01月 


        
        
    "

    編輯推薦
    1.以通俗易懂的語言、生動有趣的示例來講解C#各個方面的知識,內容安排兼顧廣度、深度,緊跟C#發展動向,知識新穎、內容豐富。開發工具使用Visual Studio 2015,內容既囊括了數據類型、運算符、程序控制、數組、字符串等傳統內容,也涵蓋了面向對像、Windows Form 程序設計、文件、集合、泛型、GDI 、多線程、序列化、SQL、ADO.NET、實用類庫等。    2.全書講解過程中配備了大量示例,示例簡短精煉,融知識性、趣味性於一體。為了給讀者釋疑解惑,在每章都安排了問與答環節。練習方面,也是分層遞進,注重梯度,綜合性和難度逐步提升,符合一般的學習規律。 
    內容簡介
    本書以通俗易懂的語言、生動有趣的示例來講解C#多個方面的知識,內容安排兼顧廣度、深度,緊跟C#發展動向,知識新穎,內容豐富。開發工具使用Visual Studio 2015,內容囊括數據類型、運算符、程序控制、面向對像、數組、字符串、Windows Form程序設計、文件、集合、泛型、GDI 、多線程、序列化、SQL、ADO.NET、實用類庫等。
    全書講解過程中配備了大量示例,示例簡短精煉,融知識性趣味性於一體。為了給讀者釋疑解惑,也為了給部分學有餘力的讀者提供深入學習的窗口,在每章都安排了問與答環節,講解了一些容易混淆的問題或者擴展一些課堂內的知識。練習方面,也是分層遞進,注重梯度,按課堂練習→課堂思考→課後思考與練習→實戰任務,逐層深入,難度逐步提升,符合一般的學習規律。另外,在實戰任務或者思考與練習中設計了不少具有實用價值的編程練習,使讀者在學習的過程中不會感到編程枯燥無趣,體會到用C#編程其樂無窮。
    本書適合大中專院校、培訓機構的學生及.NET愛好者使用,可用作C#面向對像程序設計、.NET Framework程序設計、WinForm應用開發、.NET下的數據庫應用開發等課程的教材。
    目錄
    目錄

    第1章概述

    1.1.NET

    1.2C#

    1.3VS開發環境

    1.4編程初試

    1.4.1控制臺程序

    目錄


     


    第1章概述


     


    1.1.NET


     


    1.2C#


     


    1.3VS開發環境


     


    1.4編程初試


     


    1.4.1控制臺程序


     


    1.4.2WinForm程序


     


    1.5問與答


     


    1.5.1學習.NET相關技術,將來能干什麼


     


    1.5.2何謂注釋,C#中的注釋有幾種


     


    1.5.3使用VS.NET時有什麼技巧


     


    1.5.4VS太大,是否有更小巧的C#學習開發環境


     


    1.6思考與練習


     


    1.7實戰任務


     


    第2章數據類型與運算符


     


    2.1常量與變量


     


    2.1.1常量


     


    2.1.2變量


     


    2.1.3變量的命名


     


    2.1.4變量的命名法


     


    2.2簡單數據類型


     


    2.2.1bool類型


     


    2.2.2整型類型


     


    2.2.3char類型


     


    2.2.4小數類型


     


    2.3枚舉類型


     


    2.4結構類型


     


    2.5隱式類型變量


     


    2.6運算符


     


    2.6.1算術運算符


     


    2.6.2賦值運算符


     


    2.6.3關繫運算符與邏輯運算符


     


    2.6.4位運算符


     


    2.6.5條件運算符


     


    2.6.6自增與自減


     


    2.6.7運算符的優先級


     


    2.7轉換


     


    2.7.1隱式轉換


     


    2.7.2顯式轉換


     


    2.7.3Type.Parse


     


    2.7.4Convert類


     


    2.7.5裝箱與拆箱


     


    2.7.6as & is


     


    2.8問與答


     


    2.8.1數值類型那麼多,怎樣記憶各類型的取值範圍


     


    2.8.2如何知道數值類型占用多大存儲空間


     


    2.8.3數值運算中,除數不能為零嗎


     


    2.8.40/0.0=?


     


    2.8.5NaN和Infinity參與計算時,結果如何


     


    2.8.6定義枚舉類型時,個枚舉對應的數值必須為0嗎


     


    2.8.7定義枚舉類型時,各個枚舉項對應的數值必須連續嗎


     


    2.8.8如何更改枚素的數據類型


     


    2.8.9各種類型的默認值分別是什麼


     


    2.8.10枚舉類型的位操作是什麼意思


     


    2.9思考與練習


     


    2.10實戰任務


     


    第3章程序控制


     


    3.1選擇語句


     


    3.1.1if語句


     


    3.1.2switch語句


     


    3.2循環語句


     


    3.2.1for語句


     


    3.2.2while語句


     


    3.2.3do…while語句


     


    3.3跳轉語句


     


    3.3.1break語句


     


    3.3.2continue語句


     


    3.3.3goto語句


     


    3.3.4return語句


     


    3.3.5throw語句


     


    3.4問與答


     


    3.4.1if和switch分別應用於什麼場合


     


    3.4.2if和switch的各個分支的書寫順序有影響嗎


     


    3.4.3如何避免太深的嵌套


     


    3.4.4for、while、do…while分別應用於什麼場合


     


    3.4.5如何知道程序執行耗費的時間


     


    3.4.6如何產生隨機數


     


    3.4.7什麼叫程序集


     


    3.5思考與練習


     


    3.6實戰任務


     


    第4章面向對像基礎


     


    4.1類與對像


     


    4.2字段


     


    4.3屬性


     


    4.3.1常規屬性


     


    4.3.2自動屬性


     


    4.4索引器


     


    4.5方法


     


    4.5.1方法的定義與使用


     


    4.5.2變量作用域


     


    4.5.3方法重載


     


    4.5.4參數的個數不定問題——params


     


    4.5.5ref與out


     


    4.5.6this


     


    4.6Main()函數


     


    4.7構造函數


     


    4.8static


     


    4.9析構函數


     


    4.10委托


     


    4.10.1委托使用三步曲


     


    4.10.2多播委托


     


    4.11匿名方法


     


    4.12Lambda表達式


     


    4.13事件


     


    4.13.1事件使用三步曲


     


    4.13.2三類事件


     


    4.14繼承


     


    4.14.1繼承的實現


     


    4.14.2抽像類及抽像方法


     


    4.14.3類的密封


     


    4.14.4繼承過程中構造函數的執行順序及調用


     


    4.14.5protected修飾符


     


    4.15多態


     


    4.16接口


     


    4.17匿名類型


     


    4.18結構


     


    4.18.1DateTime


     


    4.18.2TimeSpan


     


    4.19object類


     


    4.19.1相等問題


     


    4.19.2GetType()


     


    4.19.3ToString()


     


    4.20問與答


     


    4.20.1什麼是命名空間


     


    4.20.2readonly與const究竟有何區別


     


    4.20.3什麼是分部類


     


    4.20.4密封類的擴展——擴展方法


     


    4.20.5is和as——兼談如何讓singer不要調用基類方法


     


    4.20.6重寫與重載


     


    4.20.7抽像方法和虛方法


     


    4.20.8接口、抽像類、類與結構


     


    4.20.9接口中有重名的方法該如何辦


     


    4.20.10base與this


     


    4.20.11什麼是運算符重載


     


    4.20.12如何給自定義的結構定義相等邏輯


     


    4.21思考與練習


     


    4.22實戰任務


     


    第5章數組


     


    5.1聲明及初始化


     


    5.2訪問與遍歷


     


    5.3Array


     


    5.4聰明的數組——索引器


     


    5.5問與答


     


    5.5.1如何使用Array.Sort()來排序對像數組


     


    5.5.2數組的大小真的沒法調整嗎


     


    5.5.3如何查找數組中具有特定素


     


    5.5.4索引器的參數類型一定要為int嗎


     


    5.5.5如何不計算即可獲得值、小值、和值、平均值


     


    5.6思考與練習


     


    5.7實戰任務


     


    第6章字符串


     


    6.1字符串及其轉義符


     


    6.1.1字符串及其構造


     


    6.1.2字符轉義


     


    6.2常用方法


     


    6.2.1string類的方法


     


    6.2.2字符串對像的方法


     


    6.3StringBuilder


     


    6.4編碼


     


    6.5問與答


     


    6.5.1s=null,s=string.Empty與s
    =


     


    6.5.2字符串與數組之間如何互相轉化


     


    6.5.3字符串與字節數組之間的轉換有何意義


     


    6.5.4各種編碼之間如何轉換


     


    6.6思考與練習


     


    6.7實戰任務


     


    第7章WinForm初步


     


    7.1窗體


     


    7.2控件常用操作及其鍵盤和鼠標事件


     


    7.2.1控件常用操作


     


    7.2.2鍵盤事件處理


     


    7.2.3鼠標事件處理


     


    7.3基本控件


     


    7.3.1Label控件


     


    7.3.2Button控件


     


    7.3.3RadioButton控件


     


    7.3.4CheckBox控件


     


    7.3.5TextBox控件


     


    7.3.6ListBox控件


     


    7.3.7ComboBox控件


     


    7.3.8PictureBox控件


     


    7.3.9NumericUpDown控件


     


    7.3.10ProgressBar控件


     


    7.3.11HScrollBar控件和VScrollBar控件


     


    7.3.12TrackBar控件


     


    7.3.13ToolTip控件


     


    7.3.14GroupBox控件


     


    7.3.15Panel控件


     


    7.3.16MonthCalendar控件


     


    7.4常用組件


     


    7.4.1Timer組件


     


    7.4.2ImageList組件


     


    7.5菜單


     


    7.5.1MenuStrip


     


    7.5.2ContextMenuStrip


     


    7.5.3ToolStrip


     


    7.5.4StatusStrip


     


    7.6對話框


     


    7.6.1OpenFileDialog


     


    7.6.2SaveFileDialog


     


    7.6.3FontDialog


     


    7.6.4ColorDialog


     


    7.6.5FolderBrowserDialog


     


    7.7高級控件


     


    7.7.1RichTextBox控件


     


    7.7.2CheckedListBox控件


     


    7.7.3TabControl控件


     


    7.7.4ListView控件


     


    7.7.5TreeView控件


     


    7.7.6WebBrowser控件


     


    7.8COM組件


     


    7.8.1Shockwave Flash Object組件


     


    7.8.2Windows Media Player組件


     


    7.9MDI


     


    7.10問與答


     


    7.10.1鍵盤事件KeyDown、KeyUp和KeyPress有何關繫


     


    7.10.2Click和MouseClick有何關繫


     


    7.10.3多種鼠標事件有何關繫


     


    7.10.4如何獲取應用程序的運行環境信息


     


    7.10.5如何獲取應用程序的運行目錄


     


    7.10.6如何實現拖放


     


    7.10.7關於剪貼板


     


    7.10.8如何動態構建控件樹


     


    7.10.9如何實現窗體間的數據交互


     


    7.11思考與練習


     


    7.12實戰任務


     


    第8章文件


     


    8.1文件繫統


     


    8.1.1驅動器訪問


     


    8.1.2目錄訪問


     


    8.1.3文件訪問


     


    8.1.4路徑


     


    8.2文件處理流


     


    8.2.1FileStream


     


    8.2.2StreamReader與StreamWriter


     


    8.2.3BinaryReader與BinaryWriter


     


    8.3問與答


     


    8.3.1如何創建臨時文件


     


    8.3.2如何比較兩個文件是否一樣


     


    8.4思考與練習


     


    8.5實戰任務


     


    第9章集合


     


    9.1普通集合


     


    9.1.1ArrayList


     


    9.1.2Queue


     


    9.1.3Stack


     


    9.1.4Hashtable


     


    9.1.5SortedList


     


    9.1.6BitArray


     


    9.2泛型


     


    9.3泛型集合


     


    9.3.1ListT


     


    9.3.2QueueT和StackT


     


    9.3.3DictionaryK,V和KeyValuePairK,
    V


     


    9.3.4SortedListK,V


     


    9.3.5HashSetT


     


    9.4問與答


     


    9.4.1集素應該如何正確刪除


     


    9.4.2如何使用內置排序器來實現ArrayList排序——IComparer


     


    9.4.3如何完全自定義排序規則來排序


     


    9.4.4IEnumerable和IEnumerator有什麼作用和特性


     


    9.4.5什麼是可空類型


     


    9.4.6什麼是Tuple


     


    9.4.7泛型變量的默認值是多少


     


    9.4.8針對如下泛型方法,下面的調用代碼可行嗎


     


    9.4.9泛型的比較問題


     


    9.4.10HashSetT的擴展方法


     


    9.4.11集合的運算


     


    9.5思考與練習


     


    9.6實戰任務


     


    第10章GDI


     


    10.1概述


     


    10.2輔助繪圖對像


     


    10.2.1Point結構


     


    10.2.2Size結構


     


    10.2.3Rectangle結構


     


    10.2.4Color結構


     


    10.2.5Font類


     


    10.2.6Graphics類


     


    10.3基本繪圖工具


     


    10.3.1Pen


     


    10.3.2Brush


     


    10.4圖像處理


     


    10.4.1繪制直線


     


    10.4.2繪制矩形


     


    10.4.3繪制多邊形


     


    10.4.4繪制曲線


     


    10.4.5繪制橢圓


     


    10.4.6繪制圖像


     


    10.5常見應用


     


    10.5.1格式轉換


     


    10.5.2水印


     


    10.5.3灰化


     


    10.5.4底片


     


    10.5.5浮雕


     


    10.5.6文本打印


     


    10.6問與答


     


    10.6.1如何實現網頁顏色與Color的轉換


     


    10.6.2Math類


     


    10.7思考與練習


     


    10.8實戰任務


     


    第11章多線程


     


    11.1進程


     


    11.2多線程基礎操作


     


    11.2.1創建線程


     


    11.2.2啟動線程


     


    11.2.3終止線程


     


    11.2.4暫停線程


     


    11.2.5合並線程


     


    11.3線程同步


     


    11.3.1lock


     


    11.3.2Monitor


     


    11.3.3Mutex


     


    11.3.4ContextBoundObject


     


    11.3.5ManualResetEvent


     


    11.3.6AutoResetEvent


     


    11.4線程池


     


    11.5跨線程的控件訪問


     


    11.6問與答


     


    11.6.1如何使用匿名方法來創建線程


     


    11.6.2如何使用Lambda表達式來創建線程


     


    11.6.3如何向線程方法傳遞多個參數


     


    11.6.4如何通過手動同步事件給多個線程加鎖


     


    11.7思考與練習


     


    11.8實戰任務


     


    第12章序列化


     


    12.1二進制序列化


     


    12.2SOAP序列化


     


    12.3XML序列化


     


    12.4問與答


     


    12.4.1采用二進制序列化時,從序列化後的文件能看到什麼


     


    12.4.2如何序列化到內存流


     


    12.4.3反序列化時想使用被禁止序列化的字段該如何辦


     


    12.4.4屬性在序列化時遵從什麼樣的規律呢


     


    12.5思考與練習


     


    12.6實戰任務


     


    第13章壓縮與解壓


     


    13.1DeflateStream


     


    13.2GZipStream


     


    13.3問與答


     


    13.3.1using的作用


     


    13.3.2如何實現多文件的壓縮解壓


     


    13.4思考與練習


     


    13.5實戰任務


     


    第14章SQL


     


    14.1數據庫基本概念


     


    14.2SQL學習環境及基本操作


     


    14.2.1Microsoft SQL Server Management
    Studio


     


    14.2.2數據庫與表的基本SQL操作


     


    14.3Insert


     


    14.4Select


     


    14.4.1查詢數據


     


    14.4.2查詢指定字段


     


    14.4.3排序


     


    14.4.4過濾


     


    14.4.5查詢前n條記錄


     


    14.4.6模糊查詢


     


    14.4.7統計


     


    14.4.8分組


     


    14.4.9空值查詢


     


    14.5Update


     


    14.6Delete


     


    14.7問與答


     


    14.7.1如果表名或者字段名中有空格該如何辦


     


    14.7.2如何隻返回不重復的記錄


     


    14.7.3如何指定結果的列名


     


    14.7.4如何對查詢到的結果進行一定的組合或者運算後呈現


     


    14.7.5如何使用between關鍵字


     


    14.7.6如何使用in關鍵字


     


    14.7.7如何使用[]、[^]通配符


     


    14.7.8compute子句如何使用


     


    14.7.9什麼是聯合查詢


     


    14.7.10什麼是嵌套查詢


     


    14.8思考與練習


     


    14.9實戰任務


     


    第15章ADO.NET


     


    15.1Connection


     


    15.2Command


     


    15.3DataReader


     


    15.4DataAdapter


     


    15.5DataSet


     


    15.6參數化查詢


     


    15.7數據綁定


     


    15.7.1相關控件與組件


     


    15.7.2簡單控件綁定


     


    15.7.3復雜控件綁定


     


    15.7.4數據綁定示例


     


    15.8問與答


     


    15.8.1記不住連接字符串的寫法如何辦


     


    15.8.2Access數據庫的連接字符串是怎樣的


     


    15.8.3連接Excel工作簿的連接字符串如何寫


     


    15.8.4如何使用App.config文件


     


    15.9思考與練習


     


    15.10實戰任務


     


    附錄A異常處理與調試


     


    A.1異常處理


     


    A.1.1異常處理的幾種形式


     


    A.1.2異常的引發


     


    A.1.3自定義異常


     


    A.2調試


     


    參考文獻


     

    前言

    前言

    前言

    C#作為.NET Framework下的語言,是一種簡潔優雅、多用途、面向對像的現代化語言,它兼具C語言的語法特征、Visual Basic的快速開發特征、Java的虛擬機運行特征,可謂集百家之長。目前開設.NET相關課程的高校越來越多,相關的課程主要涉及如下幾個方面: C#面向對像程序設計、.NET Framework程序設計、WinForm應用開發、ASP.NET Web應用開發、WPF程序設計、Silverlight開發、Windows Phone開發、.NET下的數據庫應用開發等。雖然目前市面上關於C#的教材很多,不過在我們近幾年的教學過程中,卻發現這些教材或多或少存在一些缺陷和不足之處,總結如下: (1) 內容陳舊。有些教材在內容安排上過於陳舊,仍然隻講C#2.0的知識。(2) 講解方法不合理。有的教材在講解C#的基礎知識時,大量使用龐大的示例,動輒好幾頁的代碼; 而有的教材則喜歡使用數據結構的知識來講解C#的基礎知識。我們認為,目前有一部分學生(包括很多IT從業人員),數據結構方面的知識並沒完全理解,在這種情況下,使用數據結構的例子來講解C#新的基礎知識,對學生無疑是雪上加霜。這樣容易導致學生學習重點轉移,甚至有可能打擊學生的學習興趣。(3) 講解抽像或者死板。不少教材講解太抽像,講解多而實例少,學生學習效果不佳。有的教材甚至從MSDN上復制不少內容,雖然MSDN的內容權威,但是MSDN上的很多敘述拗口、讓人費解。(4) 概念性錯誤。少數教材在基本概念性知識方面存在錯誤,如DateTime、TimeSpan是典型的結構,好幾套教材都稱之為類,這樣基本性的錯誤容易誤導學生對這兩種數據類型的理解。(5) 示例多、講解少。有些教材或者書籍,具有大量的示例,但卻缺少基礎的講解,僅僅隻是大量示例的羅列而已,缺少對本質內容的講解,學生也因此理解不到位,終隻會些花招而內功不足。這些書籍可以作為教材的有益補充,用作課後練習之用。鋻於以上一些原因,我們編著了本書。本書以通俗易懂的語言、生動有趣的示例來講解C#多方面的知識,內容安排兼顧廣度、深度,緊跟C#發展動向,知識新穎,內容豐富。本書代碼開發工具使用Visual Studio 2015,內容既囊括了數據類型、運算符、程序控制、數組、字符串等傳統內容,還涵蓋了面向對像、Windows Form程序設計、文件、集合、泛型、GDI 、多線程、序列化、SQL、ADO.NET、實用類庫等。本書具有如下特點: (1) 語言通俗易懂。在寫作本書的過程中,在內容的講解上力求通俗易懂,但這樣做的風險很大。因為通俗易懂往往和精確是一對矛盾。雖然從MSDN復制內容過來既輕松又權威,不用擔心出錯,不過如果這樣,也就沒必要寫這本書了。我們的目的,就是在盡量保證準確的前提下,把知識講解得易懂。(2) 示例簡短精煉。我們認為,學習新知識時,不是缺少長篇累牘的代碼,而是缺少針對性強的精煉小示例。全書配套大量精選示例,幫助讀者理解所學知識。(3) 示例融知識性和趣味性於一體。本書中很多的示例、思考與練習、實戰任務等都來自於我們長期的教學積累,不少示例生動、有趣而又具有實用價值,學生在學習的過程中不會感到編程枯燥無趣,當經過認真思考並動手實踐得到正確結果後,會充滿成就感而覺得用C#編程其樂無窮。(4) 內容新穎全面。除了上述所講的內容外,細節知識方面涉及到隱式類型變量、匿名方法、Lambda表達式、可空類型、字符編碼、擴展方法、Tuple、圖像算法及應用、壓縮解壓等諸多新穎或實用的知識,還融入了不少編程經驗體會。(5) 重點、難點突出。本書內容全面充實,重點、難點突出,如對面向對像花了大篇幅進行全面細致的講解,這是整個課程體繫的基礎核心所在。(6) 思考練習層層遞進,注重梯度。練習方面,也是分層遞進,注重梯度,按課堂練習→課堂思考→課後思考與練習→實戰任務,逐層深入,難度逐步提升,符合一般的學習規律,逐步加強學習效果。(7) 問答環節設計。在每章都安排了問與答環節,講解了一些容易混淆的問題或者擴展一些課堂內的知識,為學有餘力的讀者開了一扇扇去學習更多知識的窗口。後提及一下教材的使用。對於課時較少的院校,可以上學期安排第1~7章的授課內容,而下學期安排第8~15章的內容。對於多課時的院校,則可以根據自身情況選擇需要的章節學習。本書可以用作下述課程的教材:  C#面向對像程序設計。 .NET Framework程序設計。 WinForm應用開發。 .NET下的數據庫應用開發。另外也可以作為如下課程的入門教材:  ADO.NET入門。 SQL入門。 多線程入門。 GDI 入門。限於時間精力和水平,書中難免存在諸多值得推敲的地方,甚至會有內容的疏漏和錯誤。各位專家、老師和讀者在使用過程中,如果發現任何問題,歡迎不吝賜教。聯繫郵箱: xmwung@sina.com,gujone@163.com。感謝諸多領導、老師的指導與鼓勵支持,也感謝在教材使用過程中為本書提出建議的所有學生和老師。

    編者2016年7月


    媒體評論
    評論
    在線試讀
    第3章程 序 控 制
    一個合理實用的程序,不可能是從頭至尾一行一行地依次順序執行的。程序的執行順序在更多的場合應該適當地進行改變。這種改變程序從行依次順序執行到後一行的機制即稱為程序控制。程序控制語句有3類: 選擇語句、循環語句和跳轉語句。這3類語句構成了由簡單語句搭建程序大廈的基石。3.1選 擇 語 句選擇語句有if語句和switch語句,其中尤其以if語句為常見。3.1.1if語句if語句是基本常見的程序流程控制語句。if可以配合else或者else if來無限擴展選擇執行的分支,當然在實際編碼過程中,不會寫很多的if和else if。if語句可能會有如下幾種使用形式。無論采用下面的哪種方式,即使分支再多,多也隻會有一個分支獲得運行。(1) 一個分支: if (條件) {語句序列; }。(2) 兩個分支: if (條件) {語句序列; } else {語句序列; }。(3) 多分支: if (條件) {語句序列; } else if {語句序列; }…else {語句序列; }。(4) 嵌套: if (條件){ if語句序列;} else { if語句序列;}。其執行機制是: 判斷各個條件,哪個條件成立則執行哪個分支相應的語句序列。若所有的條件都不成立,則直接執行整個if塊後的語句。例如,若有一語音播報程序,當獲知客戶的性別為男時,可以輸出“先生,你好!”,反之如果是女士時,則輸出“女士,你好!”。則可能的參考代碼如下。


    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    if (sSex=="男")
    Console.WriteLine("先生,你好!");
    else
    Console.WriteLine("女士,你好!");


    第3章程 序 控 制
    一個合理實用的程序,不可能是從頭至尾一行一行地依次順序執行的。程序的執行順序在更多的場合應該適當地進行改變。這種改變程序從行依次順序執行到後一行的機制即稱為程序控制。程序控制語句有3類: 選擇語句、循環語句和跳轉語句。這3類語句構成了由簡單語句搭建程序大廈的基石。3.1選 擇 語 句選擇語句有if語句和switch語句,其中尤其以if語句為常見。3.1.1if語句if語句是基本常見的程序流程控制語句。if可以配合else或者else if來無限擴展選擇執行的分支,當然在實際編碼過程中,不會寫很多的if和else if。if語句可能會有如下幾種使用形式。無論采用下面的哪種方式,即使分支再多,多也隻會有一個分支獲得運行。(1) 一個分支: if (條件) {語句序列; }。(2) 兩個分支: if (條件) {語句序列; } else {語句序列; }。(3) 多分支: if (條件) {語句序列; } else if {語句序列; }…else {語句序列; }。(4) 嵌套: if (條件){ if語句序列;} else { if語句序列;}。其執行機制是: 判斷各個條件,哪個條件成立則執行哪個分支相應的語句序列。若所有的條件都不成立,則直接執行整個if塊後的語句。例如,若有一語音播報程序,當獲知客戶的性別為男時,可以輸出“先生,你好!”,反之如果是女士時,則輸出“女士,你好!”。則可能的參考代碼如下。


    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    if (sSex=="男")
    Console.WriteLine("先生,你好!");
    else
    Console.WriteLine("女士,你好!");



    上面的程序即采用的形式(2),如果能按照預期輸入,程序運行自然良好。程序執行結果如圖31所示。但是若用戶隨便輸入,隻要不輸入“男”,則上面的程序都將把客戶視為女性,自然不合理。例如如圖32所示的輸出。


    圖31兩分支的if語句——正常執行



    圖32兩分支的if語句——不正常執行


    所以可以稍加修改,改善後的代碼如下:


    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    if (sSex=="男")
    Console.WriteLine("先生,你好!");
    else if(sSex=="女")
    Console.WriteLine("女士,你好!");
    else
    Console.WriteLine("對不起,你是人妖吧?!");



    此代碼即形式(3)。另外,為了給客戶的提醒更具體點,比如根據當前時間,顯示早上好、中午好、下午好、晚上好等比較具體的問候語,則可以編寫如下代碼:


    //如下僅考慮上午好和下午好兩種問候; 並且如下關於時間的判斷並不對,此處僅為演示之用,聰明的您可以將其修改的更加合理。
    //其中DateTime.Now.Hour是用來獲取當前時間的小時部分
    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    if (sSex=="男")
    {
    if(DateTime.Now.Hour>12)
    Console.WriteLine("先生,下午好!");
    else
    Console.WriteLine("先生,上午好!");
    }
    else if(sSex=="女")
    {
    if(DateTime.Now.Hour>12)
    Console.WriteLine("女士,下午好!");
    else
    Console.WriteLine("女士,上午好!");
    }
    else
    Console.WriteLine("對不起,輸入有誤!");



    觀察上面的代碼,不難發現,此即形式(4),即if的嵌套使用。 課堂練習: 請編寫一個程序,根據用戶輸入的分數,來輸出其分數是優秀、良好、中等、及格或者不及格(分級可以根據平時百分制的常規分級認定)。3.1.2switch語句switch語句與if語句一樣,也是在眾多分支中選擇一個匹配的分支來執行。然而兩者並不是完全一樣,並且在更多的情況下,對程序編碼人員來說,用if語句會更習慣些。其語法形式如下: 


    switch (表達式) 
    {
    case 值1:
    語句序列;
    break;
    case 值2:
    語句序列;
    break;

    case 值n:
    語句序列;
    break;
    default:
    語句序列;
    break;
    }



    其執行機制是: 根據表達式的值,在各個case中尋找匹配的,如果找到匹配的case,則執行相應的語句序列直到遇到break,否則執行default分支,當然前提是在default分支存在的情況下。但是,使用時需要注意如下事項。(1) switch的表達式的值隻能是整型(byte、short、int、char等)、字符串或枚舉(其實枚舉可以視為整型的特例)。(2) 各個case下的break不可或缺; 但是若某幾個case共用一段語句序列時,break可以不要。(3) switch語句同if語句一樣,也可以嵌套。仍以3.1.1節的示例為例進行講解說明。


    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    switch (sSex)
    {
    case "男":
    Console.WriteLine("先生,你好!");
    break;
    case "女":
    Console.WriteLine("女士,你好!");
    break;
    default:
    Console.WriteLine("泰國人妖!");
    break;
    }



    若某些case對應的語句塊相同,則break可以省略。例如,上例根據用戶輸入的性別,若用戶輸入“男”或者“女”,程序輸出“性別正常”,否則輸出“性別不正常”。


    Console.Write("請輸入您的性別: ");
    string sSex=Console.ReadLine();
    switch (sSex)
    {
    case "男":
    case "女":
    Console.WriteLine("性別正常");
    break;
    default:
    Console.WriteLine("性別不正常");
    break;
    }



    兩種合法的性別對應的case塊,共用一個輸出,此時可以采用上述這種寫法。 課堂練習: 請編寫一個程序,要求使用switch語句完成。根據用戶輸入的分數,來輸出其分數是優秀、良好、中等、及格或者不及格(分級可以根據平時百分制的常規分級認定)。3.2循 環 語 句循環語句分3類,分別為for語句、while語句和do…while語句。3.2.1for語句for語句是一種使用極其靈活的循環語句。其一般形式如下: 


    for (初始化語句; 條件測試語句;迭代語句)
    {
    循環語句序列//循環體,該處的語句序列會被反復執行直至循環結束
    }



    其中,初始化語句通常用於給循環變量賦初值,此處的循環變量往往就是計數器; 而條件測試語句往往用來判斷循環是否需要繼續執行,當此處為true時循環繼續,否則不再繼續; 而迭代語句往往用來實現對循環變量值的更改,正是該更改使得循環變量的值向使循環結束的趨勢變化。另外,需要指出的是,for循環的上述3個部分並非必不可少,可以有選擇性地去除某幾個部分,甚至可以把3個部分全部去除。這樣就可以得到for循環的多種變體形式。其執行機制是: 首先執行初始化語句,其次執行條件測試語句,當條件測試語句返回true時,接著執行循環語句序列,後執行迭代語句,這樣次循環即結束。除次循環需要執行初始化語句,其他時刻不會再執行。從第二次循環開始,每次首先執行條件測試語句,如果成立則執行循環語句序列,再執行迭代語句; 然後又進入下一輪循環的條件測試語句判斷,直至該語句不成立時循環結束。
    上面的一般形式,一般也可以改寫為while語句,其對應的while語句代碼如下: 


    初始化語句;
    while (條件測試語句)
    {
    //do sth.
    迭代語句;
    }



    下面看示例。


    //100以內等差數列的輸出  1 2 3 4…
    for(int i=1;i<100;i )
    Console.WriteLine(i);



    上面的迭代語句部分雖然用自增表達式常見,然而卻並不是必須這麼做。例如: 


    //100以內奇數等差數列的輸出  1 3 5 7…
    for(int i=1;i<100;i =2)
    Console.WriteLine(i);
    //100以內等比數列的輸出  1 2 4 8…
    for(int i=1;i<100;i*=2)
    Console.WriteLine(i);



    for循環的變體很多,此處不一一說明,僅給出兩個簡單示例,有興趣的讀者可以參看其他書籍,或者自行測試。


    //100以內奇數等差數列的輸出1 3 5 7…
    for(int i=1;i<100;)
    {
    Console.WriteLine(i);
    i =2;
    }
    //100以內等比數列的輸出1 2 4 8…
    int i=1;
    for(;i<100;)
    {
    Console.WriteLine(i);
    i*=2;
    }



    在上面的兩個小示例中,個示例取消了迭代語句部分,而第二個示例則將初始化語句部分和迭代部分都取消了,然而程序仍能正確執行。如果將3個部分都取消,隻留下循環語句序列部分,則構成一個死循環。讀者可以根據for循環的執行機制分析上述兩段小程序。
    當循環變量僅僅用於循環計數而無其他作用時,好將循環變量i的作用域限制在for循環的結構內部,即: 


    for(int i=0;i


    而不應該這麼寫: 


    int i=0;
    for(i=0;i



    由於條件測試表達式會反復執行,因此如果該表達式來自於一個費時的函數,且該函數與循環變量無關,則應注意優化寫法。例如: 


    int GetMaxLength()
    {
    System.Threading.Thread.Sleep(2000);//模擬一個耗時的操作
    return 100;
    }
    for(int i=0;i{
    //do sth.
    }



    這樣,雖然GetMaxLength()的返回值與循環變量i無關,但每次循環都會執行GetMaxLength(),白白浪費了大量的時間。所以可以做如下改寫: 


    int max=GetMaxLength();
    for(int i=0;i{
    //do sth.
    }



    修改後,這個耗時的操作將隻會執行一遍。在WinForm或者ASP.NET中不少讀者容易犯類似的錯誤,例如: 


    for(int i=0;i < Convert.ToInt32(textBox1.Text);i )
    {
    //do sth.
    }




    此外還有另外一類問題,就是使用循環來做某種匹配,當匹配到時即退出循環。典型的應用如在ListBox中添加不重復項的情況,此時比較通用的做法是定義一個bool類型的標記變量flag,然後在循環結束後通過flag的值來決定將要做何後續操作。3.2.2while語句while語句是另外一種常見的循環形式,其一般形式如下: 


    while (條件表達式)
    {
    循環語句序列;
    }



    其執行機制是: 首先執行條件表達式,若為真則執行循環語句序列,接著再執行條件表達式,直到條件表達式不成立退出循環為止,繼而執行循環體之外的語句。當條件表達式次就不成立時,此時循環語句序列不會獲得任何執行機會。仍以3.2.1節中輸出100以內的奇數等差數列為例進行說明,代碼如下: 


    //100以內奇數等差數列的輸出  1 3 5 7…
    int i=1;
    while (i<100)
    {
    Console.WriteLine(i);
    i =2;
    }



    3.2.3do…while語句do…while語句是另外一種常見的循環形式,與while語句基本完全一樣。其一般形式如下: 


    do
    {
    循環語句序列;
    } while (條件表達式);



    其執行機制是: 首先執行循環語句序列,然後執行條件表達式,若為真則接著執行循環語句序列,接著再執行條件表達式,直到條件表達式不成立退出循環而執行循環之外的語句。從上面的敘述可以看到,do…while語句中的循環語句序列至少將獲得一次執行機會。這也是do…while與while的不同之處。仍以3.2.1節中的輸出100以內的奇數等差數列為例進行說明,代碼如下: 


    //100以內奇數等差數列的輸出  1 3 5 7…
    int i=1;
    do{
    Console.WriteLine(i);
    i =2;
    }
    while (i<100);



    對比3.2.2節的while語句,也許看不到差別,但是若將i的初值賦為不小於100(例如1000)的整數,然後再執行上面兩段程序,將會看到:  while語句對應的程序不會有任何輸出,而do…while語句則會輸出1000。3.3跳 轉 語 句跳轉語句有break、continue、goto、return、throw,這幾個語句都能夠改變程序的執行流程。其中尤其以break語句、return語句為常見,throw語句則用於異常處理,而goto語句一般都不推薦使用,因為它可能導致程序難以閱讀、維護,給人混亂的感覺。3.3.1break語句break語句除了用於switch語句中,它更廣的用途是用於退出循環,即將程序的執行流程從循環內轉到循環外的條語句。它的使用頻率很高。例如: 


    for (int i=1;i<10;i )
    {
    if (i % 3==0)
    break;
    Console.WriteLine(i);
    }



    程序的執行結果如圖33所示。可見,當i=3時,由於滿足if的條件,故執行break語句,導致程序跳出了循環,後續的數值無法輸出。當存在多層循環嵌套時,break語句僅僅從它所在的循環跳出,而不是跳轉到所有循環的外面。例如: 


    for(int j=1;j<4;j )
    {
    for (int i=1;i<10;i )
    {
    if (i % 3==0)
    break;
    Console.WriteLine(i);
    }
    Console.WriteLine("內層循環結束");
    }



    程序的執行結果如圖34所示。


    圖33break語句



    圖34多層循環下的break語句


    從結果明顯地看到,雖然在內層循環中使用break語句退出了循環,但外層循環不受影響,仍然執行了3次。3.3.2continue語句continue語句容易與break語句混淆,它也是一個用於循環控制的語句,其作用不是退出整個循環,隻是將程序的執行流程提前跳轉到下一次循環,執行流程仍然在循環內。這一點與break語句不一樣,break語句使得程序的執行流程從循環內跳轉到了循環外。例如: 


    for (int i=1;i<10;i )
    {
    if (i % 3==0)
    continue;
    Console.WriteLine(i);
    }





    圖35continue語句


    程序的執行結果如圖35所示。從執行結果可以看到,凡是滿足被3整除的數值都沒有被輸出,其他數值都被正常輸出,表明程序遇到continue
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部