C#程序設(shè)計(jì)(慕課版第2版)PPT完整全套教學(xué)課件_第1頁(yè)
C#程序設(shè)計(jì)(慕課版第2版)PPT完整全套教學(xué)課件_第2頁(yè)
C#程序設(shè)計(jì)(慕課版第2版)PPT完整全套教學(xué)課件_第3頁(yè)
C#程序設(shè)計(jì)(慕課版第2版)PPT完整全套教學(xué)課件_第4頁(yè)
C#程序設(shè)計(jì)(慕課版第2版)PPT完整全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩463頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章.NET與C#基礎(chǔ)01C#語(yǔ)言簡(jiǎn)介02.NET開發(fā)平臺(tái)03VisualC#開發(fā)環(huán)境1

C#語(yǔ)言簡(jiǎn)介C#語(yǔ)言簡(jiǎn)介

引入

C#,讀作CSharp,是微軟公司設(shè)計(jì)的一種編程語(yǔ)言,是從C和C++基礎(chǔ)上開發(fā)出來(lái)的一種簡(jiǎn)單、面向?qū)ο蠛皖愋桶踩木幊陶Z(yǔ)言,并且能夠與.NET

Framework完美結(jié)合。注意安德斯·海爾斯伯格(AndersHejlsberg,1960.12~),丹麥人,TurboPascal編譯器的主要作者,Delphi和C#之父,同時(shí)也是·NET創(chuàng)立者。C#創(chuàng)始人2014年6月C#4.6預(yù)覽版(.NET4.6)2012年8月15日C#4.5發(fā)布(.NET4.5)2010年4月12日C#4.0發(fā)布(.NET4.0)2007年11月20日C#3.0發(fā)布(.NET3.5)2005年11月7日C#2.0發(fā)布(.NET2.0)2002年2月13日C#1.0發(fā)布(.NET1.0)2000年6月C#語(yǔ)言發(fā)布C#的發(fā)展歷史C#的特點(diǎn)封裝、繼承、多態(tài)通過(guò).NET框架運(yùn)行,不直接操作內(nèi)存2.NET開發(fā)平臺(tái)主要內(nèi)容.NETFramework概述VS2015的集成開發(fā)環(huán)境第一個(gè)C#程序123C#程序的基本結(jié)構(gòu)4.NETFramework概述

公共語(yǔ)言規(guī)范

通用類型系統(tǒng).NETFramework(運(yùn)行平臺(tái))VisualStudio(開發(fā)工具)VB.NETC#VC++JScript….NETFramework

類庫(kù)(CLR)開發(fā)語(yǔ)言.NETFramework平臺(tái)上的一種開發(fā)語(yǔ)言C#與.NETFramework.NET程序執(zhí)行原理

安裝VisualStudio2017必備條件記事本常用的代碼編寫工具Notepad++常用的代碼編寫工具UltraEditEditPlusVisualStudio2017VisualStudio的其他版本VisualStudio2017的安裝要求名稱說(shuō)明處理器2.0GHz雙核處理器,建議使用2.0GHz雙核處理器RAM4G,建議使用8G內(nèi)存可用硬盤空間系統(tǒng)盤上最少需要10G的可用空間顯示器1024*768,增強(qiáng)色16位操作系統(tǒng)及所需補(bǔ)丁Windows7(SP1)、Windows8、Windows8.1、WindowsServer2008R2SP1(x64)、WindowsServer2012(x64)、Windows10

安裝VisualStudio2017安裝VisualStudio2017

下載安裝Windows7的SP1補(bǔ)丁

下載VisualStudio2017的安裝文件/zh-cn/download/details.aspx?id=5842/zh-hans/downloads/

卸載VisualStudio2017第一個(gè)C#程序示例:輸出“HelloWorld”usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace

Hello_World{

classProgram{

staticvoidMain(string[

]args){//輸出內(nèi)容Console.WriteLine("HelloWorld");

Console.ReadLine();

}}}命名空間類Main方法注釋語(yǔ)句標(biāo)識(shí)符關(guān)鍵字C#程序的基本結(jié)構(gòu)命名空間

概念

C#程序中的一種代碼組織形式,主要用來(lái)標(biāo)識(shí)類的可見范圍。namespace命名空間名稱語(yǔ)法引用using

命名空間名;

分號(hào)一定不能少?。?!

什么是類?一種數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)數(shù)據(jù)成員、方法成員和其它類等內(nèi)容,便于調(diào)用…class

類名{//類中的代碼}定義類的關(guān)鍵字類的名稱類?語(yǔ)法記住C#關(guān)鍵字intpublicthisfinallybooleanabstractcontinuefloatlongshortthrowreturnbreakforforeachstaticnewinterfaceifgotodefaultbytedocasevoidtryswitchelsecatchprivatedoubleprotectedwhilecharclassusing關(guān)鍵字類名變量名標(biāo)識(shí)符方法名數(shù)組名……標(biāo)識(shí)符名字1、字母2、下劃線‘_’首字母任意多的:1、數(shù)字2、字母3、下劃線‘_’其余部分staticvoid

Main(string[]args){}staticvoidMain(){}staticintMain(string[]args){}staticint

Main(){}Main方法Main的首字母必須大寫返回值可以是void或者int命令行參數(shù)可選Main方法必須定義為static語(yǔ)法基本要求

Console

.WriteLine("HelloWorld");Console.ReadLine();

C#語(yǔ)句

概念

C#語(yǔ)句實(shí)質(zhì)上就是實(shí)現(xiàn)各種功能的C#代碼。HelloWorld關(guān)鍵代碼回顧:控制臺(tái)類注釋行注釋12塊注釋3VisualC#開發(fā)環(huán)境新建Windows窗體應(yīng)用程序窗體設(shè)計(jì)區(qū)/代碼編寫區(qū)菜單欄解決方案資源管理器工具欄錯(cuò)誤列表輸出屬性工具箱標(biāo)題欄標(biāo)準(zhǔn)工具欄調(diào)試工具欄工具欄C#的學(xué)習(xí)幫助網(wǎng)站C#的學(xué)習(xí)幫助網(wǎng)站/bbs小結(jié)本章首先對(duì)C#語(yǔ)言的發(fā)展歷史、特點(diǎn)及.NETFramework進(jìn)行了介紹;然后重點(diǎn)講解了VisualStudio2015開發(fā)環(huán)境的安裝,如何使用VisualStudio2015開發(fā)環(huán)境創(chuàng)建應(yīng)用程序,及一個(gè)C#程序的基本組成結(jié)構(gòu);最后,對(duì)VisualStudio2015開發(fā)環(huán)境的標(biāo)題欄、菜單欄、工具欄、工具箱以及常用的一些窗口進(jìn)行了介紹。本章是學(xué)習(xí)C#編程的基礎(chǔ),學(xué)習(xí)本章內(nèi)容時(shí),應(yīng)該重點(diǎn)掌握VisualStudio2015的安裝過(guò)程及常用窗口的使用,并熟悉C#程序的基本結(jié)構(gòu)。上機(jī)指導(dǎo)使用C#創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,然后使用Console.WriteLine方法在控制臺(tái)中輸出“編程詞典(珍藏版)”軟件的啟動(dòng)頁(yè)。第2章C#語(yǔ)言基礎(chǔ)01基本數(shù)據(jù)類型02常量和變量03表達(dá)式與運(yùn)算符04選擇語(yǔ)句05循環(huán)語(yǔ)句06跳轉(zhuǎn)語(yǔ)句07數(shù)組1

基本數(shù)據(jù)類型基本數(shù)據(jù)類型值類型直接存儲(chǔ)值30ageageage2intage=30;3030intage2=age;ageage23035age2=35;值類型整數(shù)類型inti=10;intj=-10;uintm=10;uintn=-10;示例類型說(shuō)明(8位等于1字節(jié))范圍sbyte8位有符號(hào)整數(shù)-128~127short16位有符號(hào)整數(shù)-32768~32767int32位有符號(hào)整數(shù)-2147483648~2147483647long64位有符號(hào)整數(shù)-9223372036854775808~9223372036854775807byte8位無(wú)符號(hào)整數(shù)0~255ushort16位無(wú)符號(hào)整數(shù)0~65535uint32位無(wú)符號(hào)整數(shù)0~4294967295ulong64位無(wú)符號(hào)整數(shù)0~18446744073709551615類型說(shuō)明范圍float精確到7位數(shù)1.5×10-45~3.4×1038double精確到15~16位數(shù)5.0×10-324~1.7×10308decimal精確到28位數(shù)±1.0×10-28~±7.9×1028floattheMySum=9.27f;floattheMuSums=1.12F;doublemyDou=927d;doublemudou=112D;decimalmoney=1.12m;或者decimalmoney=1.12M;浮點(diǎn)類型bool類型

布爾類型主要用來(lái)表示true/false值,C#中定義布爾類型時(shí),需要使用bool關(guān)鍵字。例如,下面代碼定義一個(gè)布爾類型的變量:boolx=true;

bool類型的默認(rèn)值是false。C#語(yǔ)言中,使用char/Char類定義字符,并且字符只能用單引號(hào)括起來(lái)charch1=‘m’;Charch1=‘m’;‘M’‘5’‘男’‘bool’‘5.2’“ch”×××檢查下面這些是否是合法的字符字符類型語(yǔ)法student1student1.Name=“m”Name=“m”引用類型存儲(chǔ)對(duì)值的引用student1studnet2Name=“n”student2.Name=“n”student2=student1引用類型Name=“m”兩個(gè)變量都發(fā)生變化student1studnet2

.NET中預(yù)定義的兩種引用類型類型說(shuō)明objectobject類型在.NETFramework中是Object的別名。在C#的統(tǒng)一類型系統(tǒng)中,所有類型(預(yù)定義類型、用戶定義類型、引用類型和值類型)都是直接或間接從Object繼承的stringstring類型表示零或更多Unicode字符組成的序列

值類型與引用類型的區(qū)別在這里在哪里2

常量和變量

定義:不能被改變的量323680x2F3.143.14F3.14M‘A’“HelloWorld”turefalse常量constdoublePI=3.1415926;常量的分類字面常量符號(hào)常量const

引入

在數(shù)學(xué)中,我們對(duì)變量的概念有一定的了解和認(rèn)識(shí),如y=x2,其中,x、y都是變量。

那么,在C#中的變量具體是指一個(gè)什么概念呢?其實(shí),一個(gè)變量就是存儲(chǔ)區(qū)(內(nèi)存)中的一個(gè)存儲(chǔ)單元。變量

變量類型變量名=數(shù)值;變量類型變量名;變量名=數(shù)值;intmoney=1000;intmoney;money=1000;變量的聲明變量類型變量名1,變量名2,…,變量名n;intmoney1,money2,…moneyn;語(yǔ)法1、字母2、下劃線‘_’首字母任意多的:1、數(shù)字2、字母3、下劃線‘_’其余部分變量名C#語(yǔ)言中,變量命名要符合一定規(guī)則money,score,name,sex變量基本要求:簡(jiǎn)短且能清楚地表明變量的作用,通常第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。例如:myScore變量的命名規(guī)則變量的初始化賦值運(yùn)算符將右邊的數(shù)賦值給左邊的變量變量初始化的3種方法

單獨(dú)初始化變量

intsum;sum=368;

intsum=368;

inta,b,c,d,e;a=b=c=d=e=0;聲明時(shí)初始化變量同時(shí)初始化多個(gè)變量3

表達(dá)式與運(yùn)算符什么是表達(dá)式

引入

表達(dá)式是由運(yùn)算符和操作數(shù)組成的。+、-、*和/等都是運(yùn)算符,操作數(shù)包括常量、變量和表達(dá)式等。1×

4=4x*y=z符號(hào)數(shù)運(yùn)算符操作數(shù)按運(yùn)算符功能

按操作數(shù)個(gè)數(shù)

單目運(yùn)算符

雙目運(yùn)算符

三目運(yùn)算符

算術(shù)運(yùn)算符

自增自減運(yùn)算符賦值運(yùn)算符

關(guān)系運(yùn)算符

邏輯運(yùn)算符

位運(yùn)算符

條件運(yùn)算符等

運(yùn)算符的分類主要內(nèi)容

算術(shù)運(yùn)算符

自增自減運(yùn)算符

賦值運(yùn)算符

關(guān)系運(yùn)算符

邏輯運(yùn)算符

位運(yùn)算符

移位運(yùn)算符

條件運(yùn)算符0102030405060708

運(yùn)算符的優(yōu)先級(jí)與結(jié)合性09

表達(dá)式中的類型轉(zhuǎn)換09操作數(shù)操作數(shù)運(yùn)算符+-*/%算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算classTest{publicstaticvoidMain(String[]args)

{

doublei=-6.5;

intj=-2;

doubleresult=i%j;Console.WriteLine(result);}}使用%運(yùn)算符時(shí)的注意事項(xiàng)

使用%運(yùn)算符時(shí),返回結(jié)果的符號(hào)與左操作數(shù)相同-0.5b=a++;相當(dāng)于:b=a;a++;先取值,后自增b=--a;相當(dāng)于:--a;b=a;先自減,后取值自增自減運(yùn)算符

自增自減運(yùn)算符不能作用于常量或者表達(dá)式=量值做讀取操作,可以是常量、表達(dá)式做寫的操作,被賦予等號(hào)右側(cè)的值簡(jiǎn)單賦值運(yùn)算符a+=3a&=3a>>=3a%=b-3a=a+3

a=a&3a=a>>3a=a%(b-3)算術(shù)賦值此處千萬(wàn)不能寫成:a=a%b-3位賦值移位賦值復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符又稱為帶運(yùn)算的賦值運(yùn)算符,它其實(shí)是將賦值運(yùn)算符與其他運(yùn)算符合并成一個(gè)運(yùn)算符來(lái)使用,從而同時(shí)實(shí)現(xiàn)兩種運(yùn)算符的效果。

大于

>等于==不等于

!=大于或等于

>=小于或等于

<=小于

<關(guān)系運(yùn)算關(guān)系運(yùn)算符真變假,假變真全假才假全真才真

&&(&)或

||(|)非

!邏輯運(yùn)算符0變1,1變0有1即為1有0即為0全0或全1才為0位運(yùn)算符位運(yùn)算符位或|位取反~位異或^位與&

0000000000001100&

0000000000001000

0000000000001000

0000000000000100|

0000000000001000

0000000000001100十進(jìn)制12和

8進(jìn)行與運(yùn)算十進(jìn)制4和8進(jìn)行或運(yùn)算位與運(yùn)算位或運(yùn)算位運(yùn)算符示例位與運(yùn)算的結(jié)果為8位或運(yùn)算的結(jié)果為12

0000000000011111^

0000000000010110

0000000000001001~

0000000001111011

1111111110000100位異或運(yùn)算位取反運(yùn)算位運(yùn)算符示例位異或運(yùn)算的結(jié)果為9位取反運(yùn)算的結(jié)果為-124十進(jìn)制31和22進(jìn)行異或運(yùn)算十進(jìn)制123進(jìn)行取反運(yùn)算0011000001100000左移后補(bǔ)0左移1位0被舍棄移位運(yùn)算符十進(jìn)制:48十進(jìn)制:9696=48*2,192=48*2211000000左移2位左移后補(bǔ)00被舍棄十進(jìn)制:192左移相當(dāng)于乘以2的n次冪之左移位運(yùn)算001100000001100010110000右移位運(yùn)算十進(jìn)制:48十進(jìn)制:24十進(jìn)制:-80十進(jìn)制:-20111011000被舍棄0被舍棄右移1位右移后補(bǔ)0右移2位右移后補(bǔ)124=48/2-20=-80/22右移相當(dāng)于除以2的n次冪判斷公式?結(jié)果1:

結(jié)果2;示例條件運(yùn)算符if(判斷公式)

結(jié)果1else

結(jié)果2

intage=50;stringinfo=age>40?"人到中年了!":"這正是黃金奮斗的年齡";

簡(jiǎn)稱含義運(yùn)算符數(shù)目結(jié)合性單單目++,--,!,~單目←算算術(shù)*,/,%雙目→+,-雙目→位移位<<,>>雙目→關(guān)關(guān)系>,>=,<,<=雙目→==,!=雙目→邏邏輯&&雙目→||雙目→條條件?:三目←賦賦值=,+=,-=,*=,/=,%=雙目←運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)從高到底表達(dá)式中的類型轉(zhuǎn)換之隱式類型轉(zhuǎn)換在某種條件下,系統(tǒng)自動(dòng)完成類型轉(zhuǎn)換(即隱式類型轉(zhuǎn)換)兩種類型兼容例如:double兼容int類型目標(biāo)類型精度大于源類型例如:double類型大于int類型(類型名)表達(dá)式intb=(int)10.2;doublea=10.5;intc=(int)a;1Convert.To類型名(表達(dá)式)doublea=10.5;intc=Convert.ToInt32(a);2類型名.Parse(表達(dá)式)doublea=10.5;intc=Int.Parse(a.ToString());3顯式類型轉(zhuǎn)換數(shù)值類型值類型引用類型裝箱拆箱裝箱和拆箱4

選擇語(yǔ)句主要內(nèi)容

if語(yǔ)句01

switch語(yǔ)句02最簡(jiǎn)單的if語(yǔ)句(1)表達(dá)式必須使用圓括號(hào)括起來(lái)(2)表達(dá)式:關(guān)系表達(dá)式或邏輯表達(dá)式(3)“語(yǔ)句”可以使單語(yǔ)句也可以是復(fù)合語(yǔ)句if(表達(dá)式){

語(yǔ)句}語(yǔ)法if…else語(yǔ)句(1)表達(dá)式:關(guān)系表達(dá)式或邏輯表達(dá)式(2)“語(yǔ)句1或者語(yǔ)句2”可以是單語(yǔ)句也可以是復(fù)合語(yǔ)句if(表達(dá)式){

語(yǔ)句1}else{

語(yǔ)句2}語(yǔ)法if…else語(yǔ)句與條件運(yùn)算符if(表達(dá)式)

語(yǔ)句1else

語(yǔ)句2

表達(dá)式?語(yǔ)句1:

語(yǔ)句2;嘗試使用條件運(yùn)算符對(duì)前面判斷某個(gè)數(shù)是奇數(shù)還是偶數(shù)的實(shí)例進(jìn)行修改。if語(yǔ)句多于else語(yǔ)句的問(wèn)題

程序中使用if…else語(yǔ)句時(shí),如果出現(xiàn)if語(yǔ)句多于else語(yǔ)句的情況,在沒(méi)有特殊處理的情況下,else永遠(yuǎn)都與最后出現(xiàn)的if語(yǔ)句相匹配。if(表達(dá)式1){

語(yǔ)句1}elseif(表達(dá)式2){

語(yǔ)句2}…elseif(表達(dá)式n){

語(yǔ)句n}else{

語(yǔ)句n+1}注意:else和if之間有一個(gè)空格if…elseif…else語(yǔ)句

表達(dá)式1

假語(yǔ)句1

真語(yǔ)句n+1

表達(dá)式2

語(yǔ)句2

真假真假表達(dá)式n

真假語(yǔ)句n

…………if語(yǔ)句的嵌套if(表達(dá)式1){if(表達(dá)式2){//表達(dá)式2為真時(shí)執(zhí)行……}else{//表達(dá)式2為假時(shí)執(zhí)行……}}if(表達(dá)式1){if(表達(dá)式2){//表達(dá)式2為真時(shí)執(zhí)行……}

elseif(表達(dá)式3)

{//表達(dá)式3為真時(shí)執(zhí)行……}}else{//表達(dá)式1為假時(shí)執(zhí)行……}if語(yǔ)句中嵌套if…else1if…else中嵌套if…elseif2任意互相嵌套使用if語(yǔ)句的嵌套判斷用戶輸入的年份是不是閏年。switch(表達(dá)式){case常量表達(dá)式1:

語(yǔ)句1;break;case常量表達(dá)式2:

語(yǔ)句2;break;…case常量表達(dá)式n:

語(yǔ)句n;break;default:

語(yǔ)句n+1;break;}整型/char/string/bool類型

用于退出switch語(yǔ)句,不能省略注意:這里是冒號(hào),不是分號(hào)switch多分支語(yǔ)句switch多分支語(yǔ)句的執(zhí)行流程5

循環(huán)語(yǔ)句主要內(nèi)容

while循環(huán)語(yǔ)句01

do…while循環(huán)語(yǔ)句02

for循環(huán)語(yǔ)句03while循環(huán)語(yǔ)句(1)表達(dá)式:關(guān)系表達(dá)式或邏輯表達(dá)式(2)“語(yǔ)句”中應(yīng)該有能夠使循環(huán)結(jié)束的條件語(yǔ)句(3)如果表達(dá)式一開始為假,則循環(huán)體中的語(yǔ)句一次都不執(zhí)行while(表達(dá)式){

語(yǔ)句}語(yǔ)法使用while循環(huán)實(shí)現(xiàn)1到100的累加和。do…while循環(huán)語(yǔ)句(1)表達(dá)式:關(guān)系表達(dá)式或邏輯表達(dá)式(2)while表達(dá)式后面的分號(hào)一定不能省略(3)循環(huán)體中的語(yǔ)句至少執(zhí)行一次do{

語(yǔ)句}while(表達(dá)式);語(yǔ)法使用do…while循環(huán)實(shí)現(xiàn)1到100的累加和。0遍1遍想一想,下邊兩段代碼分別被執(zhí)行幾遍??while和do…while的區(qū)別for循環(huán)語(yǔ)句(1)表達(dá)式1通常用來(lái)初始化循環(huán)變量(2)表達(dá)式2是一個(gè)關(guān)系表達(dá)式或邏輯表達(dá)式,用來(lái)作為判斷條件(3)表達(dá)式3通常用來(lái)對(duì)循環(huán)變量進(jìn)行遞增或遞減操作,以便存在能夠使循環(huán)結(jié)束的條件(4)表達(dá)式之間用分號(hào)連接,分號(hào)一定不能省略for(表達(dá)式1;表達(dá)式2;表達(dá)式3){

語(yǔ)句}語(yǔ)法使用for循環(huán)實(shí)現(xiàn)1到100的累加和。for循環(huán)應(yīng)用6

跳轉(zhuǎn)語(yǔ)句主要內(nèi)容

break語(yǔ)句01

continue語(yǔ)句02

goto語(yǔ)句03break在循環(huán)中的使用inti,sum=0;for(i=1;;i++){sum+=i;}inti,sum=0;for(i=1;;i++){if(i>100){

break;}

sum+=i;}修改(1)break語(yǔ)句通常應(yīng)用在switch、while、do…while或for循環(huán)中(2)break一般與if語(yǔ)句搭配使用,用來(lái)跳出循環(huán)“死循環(huán)”continue的使用(1)continue語(yǔ)句通常應(yīng)用在while、do…while或for循環(huán)中(2)continue一般與if語(yǔ)句搭配使用,用來(lái)開始一次新的循環(huán)?2+4+6+8+……+100=?inti,sum=0;for(i=1;i<=100;i++){

if(i%2==1)continue;sum+=i;}break和continue的區(qū)別breakcontinue使用goto語(yǔ)句實(shí)現(xiàn)1到100的累加。goto語(yǔ)句的使用gotoLable;Console.WriteLine(“themessagebeforeLabel”);Lable:Console.WriteLine(“theLabelmessage”);goto標(biāo)簽;語(yǔ)法改變代碼執(zhí)行順序goto使用說(shuō)明goto語(yǔ)句可以忽略當(dāng)前程序的邏輯,直接使程序跳轉(zhuǎn)到某一語(yǔ)句執(zhí)行,有時(shí)非常方便,但是也正是由于goto語(yǔ)句的這種特性,在程序開發(fā)中一般不主張使用goto語(yǔ)句,以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。7

數(shù)組主要內(nèi)容

一維數(shù)組01

多維數(shù)組02

不規(guī)則數(shù)組03

數(shù)組與System.Array04

常用數(shù)組操作05

使用foreach語(yǔ)句遍歷數(shù)組06一維數(shù)組

引入一維數(shù)組是具有相同數(shù)據(jù)類型的一組數(shù)據(jù)的線性集合,在程序中可以通過(guò)一維數(shù)組來(lái)完成一組相同數(shù)據(jù)類型數(shù)據(jù)的線性處理。type[]arrayName;語(yǔ)法一維數(shù)組初始化的3種方法

初始化一維數(shù)組為默認(rèn)值

int[]arr=newint[5];int[]arr=newint[5]{1,2,3,4,5};

string[]arrStr={"Sun","Mon","Tue",

"Wed","Thu","Fri","Sat"};初始化一維數(shù)組為指定值省略長(zhǎng)度初始化數(shù)組多維數(shù)組

引入多維數(shù)組是指可以用多個(gè)下標(biāo)訪問(wèn)的數(shù)組,聲明時(shí),方括號(hào)內(nèi)加逗號(hào),就表明是多維數(shù)組,有n個(gè)逗號(hào),就是n+1維數(shù)組。type[,]arrayName;語(yǔ)法多維數(shù)組初始化的2種方法

初始化二維數(shù)組為默認(rèn)值

int[,]arr=newint[3,2];int[,]arr=newint[3,2]{{1,2},{3,4},{5,6}}; 初始化二維數(shù)組為指定值不規(guī)則數(shù)組int[][]a=newint[3][]; a[0]=newint[5];a[1]=newint[3];a[2]=newint[4];語(yǔ)法數(shù)組與System.Array方法說(shuō)明Copy將數(shù)組中的指定元素復(fù)制到另一個(gè)Array中CopyTo從指定的目標(biāo)數(shù)組索引處開始,將當(dāng)前一位數(shù)組中的所有元素復(fù)制到另一個(gè)一位數(shù)組中Exists判斷數(shù)組中是否包含指定的元素GetLength獲取Array的指定維中的元素?cái)?shù)GetValue獲取Array中指定位置的值Reverse反轉(zhuǎn)一維Array中元素的順序SetValue設(shè)置Array中指定位置的元素Sort對(duì)一維Array數(shù)組元素進(jìn)行排序

C#中的數(shù)組是由System.Array類派生而來(lái)的引用對(duì)象。

數(shù)組常用操作

一維數(shù)組的輸入與輸出

使用單層循環(huán)實(shí)現(xiàn)使用雙層嵌套循環(huán)實(shí)現(xiàn)

排序算法:冒泡排序等二維數(shù)組的輸入與輸出數(shù)組的排序使用foreach語(yǔ)句遍歷數(shù)組foreach(【類型】【迭代變量名】in【集合表達(dá)式】){

語(yǔ)句}語(yǔ)法string[]strNames={"進(jìn)貨管理","銷售管理","庫(kù)存管理","系統(tǒng)設(shè)置"};foreach(stringstrinstrNames){Console.Write(str+""); }示例小結(jié)

本章對(duì)C#語(yǔ)言基礎(chǔ)知識(shí)進(jìn)行了詳細(xì)講解,學(xué)習(xí)本章時(shí),讀者應(yīng)該重點(diǎn)掌握變量和常量的使用、各種運(yùn)算符的使用、流程控制語(yǔ)句的使用以及數(shù)組的基本操作。本章是C#程序開發(fā)的基礎(chǔ),因此,我們一定要熟練掌握。上機(jī)指導(dǎo)

通過(guò)本章所學(xué)嘗試制作一個(gè)簡(jiǎn)單的客車售票系統(tǒng),假設(shè)客車的坐位數(shù)是9行4列,使用一個(gè)二維數(shù)組記錄客車售票系統(tǒng)中的所有座位號(hào),并在每個(gè)座位號(hào)上都顯示“【有票】”,然后用戶輸入一個(gè)坐標(biāo)位置,按回車鍵,即可將該座位號(hào)顯示為“【已售】”。第3章面向?qū)ο缶幊袒A(chǔ)01面向?qū)ο蟾拍?2類03方法1

面向?qū)ο蟾拍顚?duì)象、類、實(shí)例化對(duì)象=(算法+數(shù)據(jù)結(jié)構(gòu))程序=(對(duì)象+對(duì)象+……)封裝面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的三大原則繼承面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的三大原則多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的三大原則

繼承中提到了父類和子類,其實(shí)將父類對(duì)象應(yīng)用于子類的特征就是多態(tài)。依然以圖形類來(lái)說(shuō)明多態(tài),每個(gè)圖形都擁有繪制自己的能力,這個(gè)能力可以看作是該類具有的行為,如果將子類的對(duì)象統(tǒng)一看作是父類的實(shí)例對(duì)象,這樣當(dāng)繪制任何圖形時(shí),可以簡(jiǎn)單地調(diào)用父類也就是圖形類繪制圖形的方法即可繪制任何圖形,這就是多態(tài)最基本的思想。2

類主要內(nèi)容

類的概念

類的聲明

類的成員

構(gòu)造函數(shù)和析構(gòu)函數(shù)

對(duì)象的創(chuàng)建及使用

this關(guān)鍵字

類與對(duì)象的關(guān)系01020304050607

類是一種數(shù)據(jù)結(jié)構(gòu),它可以包含數(shù)據(jù)成員(常量和域)、函數(shù)成員(方法、屬性、事件、索引器、運(yùn)算符、構(gòu)造函數(shù)和析構(gòu)函數(shù))和嵌套類型。

類(class)實(shí)際上是對(duì)某種類型的對(duì)象定義變量和方法的原型,它表示對(duì)現(xiàn)實(shí)生活中一類具有共同特征的事物的抽象,是面向?qū)ο缶幊痰幕A(chǔ)。類的概念類修飾符class類名{}類的聲明publicclassCar{publicintnumber;

publicstringcolor;

privatestringbrand; }語(yǔ)法類的成員

字段常量或者變量

enum

枚舉名{list1=value1,list2=value2,list3=value3,…listN=valueN,}

【修飾符】【類型】【屬性名】{get{get訪問(wèn)器體}set{set訪問(wèn)器體}}枚舉屬性構(gòu)造函數(shù)和析構(gòu)函數(shù)

構(gòu)造函數(shù)構(gòu)造函數(shù)是在創(chuàng)建給定類型的對(duì)象時(shí)執(zhí)行的類方法,構(gòu)造函數(shù)具有與類相同的名稱,它通常初始化新對(duì)象的數(shù)據(jù)成員。

publicProgram(){z=x+y;

}

析構(gòu)函數(shù)是以類名加~來(lái)命名的。.NET

Framework類庫(kù)有垃圾回收功能,當(dāng)某個(gè)類的實(shí)例被認(rèn)為是不再有效,并符合析構(gòu)條件時(shí),.NET

Framework類庫(kù)的垃圾回收功能就會(huì)調(diào)用該類的析構(gòu)函數(shù)實(shí)現(xiàn)垃圾回收。~Program() //析構(gòu)函數(shù){Console.WriteLine("析構(gòu)函數(shù)自動(dòng)調(diào)用");}析構(gòu)函數(shù)對(duì)象的創(chuàng)建及使用

對(duì)象的創(chuàng)建Testtest=newTest();Testtest=newTest("a");cStockInfostockInfo=newcStockInfo();stockInfo.FullName="筆記本電腦";stockInfo.ShowGoods();訪問(wèn)對(duì)象的屬性和行為

對(duì)象的引用Bookbook;或:Bookbook=newBook();

對(duì)象的銷毀this關(guān)鍵字C#語(yǔ)言中可以使用this關(guān)鍵字來(lái)代表本類對(duì)象的引用,this關(guān)鍵字被隱式地用于引用對(duì)象的成員變量和方法。privatevoidsetName(Stringname){

=name;}類與對(duì)象的關(guān)系

類是具有相同或相似結(jié)構(gòu)、操作和約束規(guī)則的對(duì)象組成的集合,而對(duì)象是某一類的具體化實(shí)例,每一個(gè)類都是具有某些共同特征的對(duì)象的抽象。3

方法主要內(nèi)容

方法的聲明

方法的參數(shù)

靜態(tài)方法與實(shí)例方法

方法的重載01020304方法的聲明修飾符返回值類型方法名(參數(shù)列表){//方法的具體實(shí)現(xiàn);}publicvoidShowGoods(){

Console.WriteLine("庫(kù)存商品名稱:");

Console.WriteLine(FullName);}語(yǔ)法方法的參數(shù)

值參數(shù)

值參數(shù)就是在聲明時(shí)不加修飾的參數(shù),它表明實(shí)參與形參之間按值傳遞。由于是值類型的傳遞方式,所以,在方法中對(duì)形參的修改并不會(huì)影響實(shí)參。privateintAdd(intx,inty){x=x+y;returnx; //返回x}ref參數(shù)使形參按引用傳遞,其效果是:在方法中對(duì)形參所做的任何更改都將反映在實(shí)參中。如果要使用ref參數(shù),則方法聲明和方法調(diào)用都必須顯式使用ref關(guān)鍵字。privateintAdd(refintx,inty) {x=x+y;returnx; //返回x}ref參數(shù)方法的參數(shù)

out參數(shù)out關(guān)鍵字用來(lái)定義輸出參數(shù),它會(huì)導(dǎo)致參數(shù)通過(guò)引用來(lái)傳遞,使用out關(guān)鍵字定義的參數(shù),不用進(jìn)行賦值即可使用。如果要使用out參數(shù),則方法聲明和方法調(diào)用都必須顯式使用out關(guān)鍵字。privateintAdd(intx,inty,outintz){z=x+y;returnz; //返回z}方法的參數(shù)

params參數(shù)

聲明方法時(shí),如果有多個(gè)相同類型的參數(shù),可以定義為params參數(shù)。params參數(shù)是一個(gè)一維數(shù)組,主要用來(lái)指定在參數(shù)數(shù)目可變時(shí)所采用的方法參數(shù)。privateintAdd(paramsint[]x){intresult=0;

for(inti=0;i<x.Length;i++)

{result+=x[i];}returnresult;}靜態(tài)方法與實(shí)例方法

靜態(tài)方法

靜態(tài)方法不對(duì)特定實(shí)例進(jìn)行操作,在靜態(tài)方法中引用this會(huì)導(dǎo)致編譯錯(cuò)誤,調(diào)用靜態(tài)方法時(shí),使用類名直接調(diào)用。publicstaticintAdd(intx,inty)

{returnx+y;}staticvoidMain(string[]args){Console.WriteLine("{0}+{1}={2}",23,34,Program.Add(23,34));Console.ReadLine();}靜態(tài)方法與實(shí)例方法

實(shí)例方法是對(duì)類的某個(gè)給定的實(shí)例進(jìn)行操作,使用實(shí)例方法時(shí),需要使用類的對(duì)象調(diào)用,而且可以用this來(lái)訪問(wèn)該方法。publicintAdd(intx,inty)加{returnx+y;}staticvoidMain(string[]args){Programpro=newProgram();

Console.WriteLine("{0}+{1}={2}",23,34,pro.Add(23,34));Console.ReadLine();}實(shí)例方法方法的重載

方法重載是指方法名相同,但參數(shù)的數(shù)據(jù)類型、個(gè)數(shù)或順序不同的方法。publicstaticintAdd(intx,inty){returnx+y;}publicdoubleAdd(intx,doubley){returnx+y;}publicintAdd(intx,inty,intz)

{returnx+y+z;}小結(jié)

本章主要對(duì)面向?qū)ο缶幊痰幕A(chǔ)知識(shí)進(jìn)行了詳細(xì)講解,具體講解時(shí),首先介紹了對(duì)象、類與實(shí)例化這3個(gè)基本概念,以及面向?qū)ο蟪绦蛟O(shè)計(jì)的3大基本原則;然后重點(diǎn)對(duì)類和對(duì)象,以及方法的使用進(jìn)行了詳細(xì)講解。學(xué)習(xí)本章內(nèi)容時(shí),一定要重點(diǎn)掌握類與對(duì)象的創(chuàng)建及使用,并熟練掌握常見的幾種方法參數(shù)類型,以及靜態(tài)方法與實(shí)例方法的主要區(qū)別。上機(jī)指導(dǎo)

在進(jìn)銷存管理系統(tǒng)中,商品的庫(kù)存信息有很多種類,比如商品型號(hào)、商品名稱、商品庫(kù)存量等。在面向?qū)ο缶幊讨?,這些商品的信息可以存儲(chǔ)到屬性中,然后當(dāng)需要使用這些信息時(shí),再?gòu)膶?duì)應(yīng)的屬性中讀取出來(lái)。這里要求定義庫(kù)存商品結(jié)構(gòu),并輸出庫(kù)存商品的信息。第4章面向?qū)ο缶幊踢M(jìn)階01類的繼承與多態(tài)02結(jié)構(gòu)與接口03集合與索引器04異常處理05委托和匿名方法06事件07預(yù)處理指令08泛型1

類的繼承與多態(tài)繼承繼承的基本思想是基于某個(gè)基類的擴(kuò)展,制定出一個(gè)新的派生類,派生類可以繼承基類原有的屬性和方法,也可以增加原來(lái)基類所不具備的屬性和方法,或者直接重寫基類中的某些方法。classTest2:Testbase關(guān)鍵字base關(guān)鍵字用于從派生類中訪問(wèn)基類的成員,它主要有兩種使用形式,分別如下:調(diào)用基類上已被其他方法重寫的方法。指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。基類publicGoods(stringtradecode,stringfullname){TradeCode=tradecode;FullName=fullname;}派生類publicJHInfo(stringjhid,stringtradecode,stringfullname):base(tradecode,fullname){JHID=jhid;}繼承中的構(gòu)造函數(shù)和析構(gòu)函數(shù)

多態(tài)是面向?qū)ο缶幊痰幕咎卣髦?,它使得派生類的?shí)例可以直接賦予基類的對(duì)象,然后直接就可以通過(guò)這個(gè)對(duì)象調(diào)用派生類的方法。C#中,類的多態(tài)性是通過(guò)在派生類中重寫基類的虛方法來(lái)實(shí)現(xiàn)的。多態(tài)基類publicvirtualvoidMove()

{Console.WriteLine("{0}都可以移動(dòng)",Name);

}派生類publicoverridevoidMove(){Console.WriteLine("{0}在鐵軌上行駛",Name);}抽象類與抽象方法

如果一個(gè)類不與具體的事物相聯(lián)系,而只是表達(dá)一種抽象的概念或行為,僅僅是作為其派生類的一個(gè)基類,這樣的類就可以聲明為抽象類,在抽象類中聲明方法時(shí),如果加上abstract關(guān)鍵字,則為抽象方法,抽象方法不提供具體的實(shí)現(xiàn)。publicabstractclassTestClass{publicabstractvoidAbsMethod();//抽象方法}密封類與密封方法

為了避免濫用繼承,C#中提出了密封類的概念。密封類可以用來(lái)限制擴(kuò)展性,如果密封了某個(gè)類,則其他類不能從該類繼承;如果密封了某個(gè)成員,則派生類不能重寫該成員的實(shí)現(xiàn)。

如果類的方法聲明中包含sealed修飾符,則稱該方法為密封方法。密封方法只能用于對(duì)基類的虛方法進(jìn)行實(shí)現(xiàn),因此,聲明密封方法時(shí),sealed修飾符總是和override修飾符同時(shí)使用。publicsealedclassJHInfo:Information//密封類{//將基類的虛方法重寫,并設(shè)置為密封方法publicsealedoverridevoidShowInfo(){Console.WriteLine("進(jìn)貨信息:\n"+Code+""+Name);}}2

結(jié)構(gòu)與接口

結(jié)構(gòu)是一種值類型,通常用來(lái)封裝一組相關(guān)的變量,結(jié)構(gòu)中可以包括構(gòu)造函數(shù)、常量、字段、方法、屬性、運(yùn)算符、事件和嵌套類型等。結(jié)構(gòu)實(shí)際是將多個(gè)相關(guān)的變量包裝成為一個(gè)整體使用。在結(jié)構(gòu)體中的變量,可以是相同、部分相同,或完全不同的數(shù)據(jù)類型。

C#中使用struct關(guān)鍵字來(lái)聲明結(jié)構(gòu)。結(jié)構(gòu)結(jié)構(gòu)修飾符struct結(jié)構(gòu)名{}語(yǔ)法修飾符interface接口名稱:繼承的接口列表{

接口內(nèi)容;}接口語(yǔ)法

接口提出了一種契約(或者說(shuō)規(guī)范),讓使用接口的程序設(shè)計(jì)人員必須嚴(yán)格遵守接口提出的約定。接口可以包含方法、屬性、索引器和事件作為成員,但是并不能設(shè)置這些成員的具體值,也就是說(shuō),只能定義。

C#中聲明接口時(shí),使用interface關(guān)鍵字。接口的實(shí)現(xiàn)與繼承

定義

interfaceInformation{stringCode{get;set;}

voidShowInfo();}

publicclassJHInfo:Information //繼承接口,定義進(jìn)貨類{stringcode="";stringname="";publicstringCode //實(shí)現(xiàn)編號(hào)屬性{get{returncode;}set{code=value;}

}

publicvoidShowInfo() //實(shí)現(xiàn)方法,輸出進(jìn)貨信息{Console.WriteLine(Code+""+Name);}}實(shí)現(xiàn)說(shuō)明:接口中的成員默認(rèn)是公共的,因此,不允許加訪問(wèn)修飾符。顯式接口成員實(shí)現(xiàn)

如果類實(shí)現(xiàn)兩個(gè)接口,并且這兩個(gè)接口包含具有相同簽名的成員,那么在類中實(shí)現(xiàn)該成員將導(dǎo)致兩個(gè)接口都使用該成員作為它們的實(shí)現(xiàn),然而,如果兩個(gè)接口成員實(shí)現(xiàn)不同的功能,那么這可能會(huì)導(dǎo)致其中一個(gè)接口的實(shí)現(xiàn)不正確或兩個(gè)接口的實(shí)現(xiàn)都不正確,這時(shí)可以顯式地實(shí)現(xiàn)接口成員,即創(chuàng)建一個(gè)僅通過(guò)該接口調(diào)用并且特定于該接口的類成員。顯式接口成員實(shí)現(xiàn)是使用接口名稱和一個(gè)句點(diǎn)命名該類成員來(lái)實(shí)現(xiàn)的。抽象類與接口抽象類和接口的區(qū)別主要有以下幾點(diǎn):它們的派生類只能繼承一個(gè)基類,即只能直接繼承一個(gè)抽象類,但可以繼承任意多個(gè)接口。抽象類中可以定義成員的實(shí)現(xiàn),但接口中不可以。抽象類中可以包含字段、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員或常量等,接口中不可以。抽象類中的成員可以是私有的(只要它們不是抽象的)、受保護(hù)的、內(nèi)部的或受保護(hù)的內(nèi)部成員(受保護(hù)的內(nèi)部成員只能在應(yīng)用程序的代碼或派生類中訪問(wèn)),但接口中的成員默認(rèn)是公共的,定義時(shí)不能加修飾符。3

集合與索引器集合語(yǔ)法

集合類似于數(shù)組,是一組組合在一起的類型化對(duì)象,可以通過(guò)遍歷獲取其中的每個(gè)元素。接口說(shuō)明ICollection定義所有非泛型集合的大小、枚舉數(shù)和同步方法IComparer公開一種比較兩個(gè)對(duì)象的方法IDictionary表示鍵/值對(duì)的非通用集合IDictionaryEnumerator枚舉非泛型字典的元素IEnumerable公開枚舉數(shù),該枚舉數(shù)支持在非泛型集合上進(jìn)行簡(jiǎn)單迭代IEnumerator支持對(duì)非泛型集合的簡(jiǎn)單迭代IList表示可按照索引單獨(dú)訪問(wèn)的對(duì)象的非泛型集合ArrayList集合語(yǔ)法ArrayList類是一種非泛型集合類,它可以動(dòng)態(tài)的添加和刪除元素。ArrayList類相當(dāng)于一種高級(jí)的動(dòng)態(tài)數(shù)組,它是Array類的升級(jí)版本,但它并不等同于數(shù)組。ArrayListlist=newArrayList();list.Add("筆記本電腦");list.Add("華為榮耀4X");list.Add("iPad平板電腦");foreach(stringnameinlist)Console.WriteLine(name);索引器【修飾符】【類型】this[【參數(shù)列表】]{

get{get訪問(wèn)器體}set{set訪問(wèn)器體}}publicstringthis[intindex]{get{returnarrStr[index];}set{arrStr[index]=value; }}語(yǔ)法C#語(yǔ)言支持一種名為索引器的特殊“屬性”,它能夠通過(guò)引用數(shù)組元素的方式來(lái)引用對(duì)象。4

異常處理異常處理類語(yǔ)法System.Exception異常處理語(yǔ)句語(yǔ)法try…catch…finally語(yǔ)句try{

被監(jiān)控的代碼}catch(異常類名

異常變量名){

異常處理}…finally{

程序代碼}throw語(yǔ)句throwExObject5

委托和匿名方法委托語(yǔ)法

C#中的委托(Delegate)是一種引用類型,該引用類型與其它引用類型有所不同,在委托對(duì)象的引用中存放的不是對(duì)數(shù)據(jù)的引用,而是存放對(duì)方法的引用,即在委托的內(nèi)部包含一個(gè)指向某個(gè)方法的指針。通過(guò)使用委托把方法的引用封裝在委托對(duì)象中,然后將委托對(duì)象傳遞給調(diào)用引用方法的代碼?!拘揎椃?/p>

delegate

【返回類型】【委托名稱】(【參數(shù)列表】)語(yǔ)法匿名方法

匿名方法允許一個(gè)與委托關(guān)聯(lián)的代碼被內(nèi)聯(lián)地寫入使用委托的位置,這使得代碼對(duì)于委托的實(shí)例很直接。除了這種便利之外,匿名方法還共享了對(duì)本地語(yǔ)句包含的函數(shù)成員的訪問(wèn)。delegate(【參數(shù)列表】){

【代碼塊】}語(yǔ)法6

事件主要內(nèi)容

委托的發(fā)布和訂閱

事件的發(fā)布和訂閱

EventHandler類

Windows事件概述01020304委托的發(fā)布和訂閱語(yǔ)法

通過(guò)委托實(shí)現(xiàn)事件處理的過(guò)程,通常需要以下4個(gè)步驟:(1)定義委托類型,并在發(fā)布者類中定義一個(gè)該類型的公有成員。(2)在訂閱者類中定義委托處理方法。(3)訂閱者對(duì)象將其事件處理方法鏈接到發(fā)布者對(duì)象的委托成員(一個(gè)委托類型的引用)上。(4)發(fā)布者對(duì)象在特定的情況下“激發(fā)”委托操作,從而自動(dòng)調(diào)用訂閱者對(duì)象的委托處理方法。事件的發(fā)布和訂閱語(yǔ)法C#提供了專門的事件處理機(jī)制,以保證事件訂閱的可靠性,其做法是在發(fā)布委托的定義中加上event關(guān)鍵字,其它代碼不變。publiceventRingEventOnBellSound;EventHandler類

在事件發(fā)布和訂閱的過(guò)程中,定義事件的類型(即委托類型)是一件重復(fù)性的工作,為此,.NET類庫(kù)中定義了一個(gè)EventHandler委托類型,并建議盡量使用該類型作為事件的委托類型。publicdelegatevoidEventHandler(objectsender,EventArgse);Windows事件概述

事件在Windows這樣的圖形界面程序中有著極其廣泛的應(yīng)用,事件響應(yīng)是程序與用戶交互的基礎(chǔ)。用戶的絕大多數(shù)操作,如移動(dòng)鼠標(biāo)、單擊鼠標(biāo)、改變光標(biāo)位置、選擇菜單命令等,都可以觸發(fā)相關(guān)的控件事件。publicForm1(){

InitializeComponent();

button1.Click+=newEventHandler(button1_Click);

}privatevoidbutton1_Click(objectsender,EventArgse){

this.Close();}7

預(yù)處理指令主要內(nèi)容

#region和#endregion

#defined和#undef

#if、#elif、#else和#endif

#warning和#error01020304

#line05在使用VisualStudio代碼編輯器的大綱顯示功能時(shí),指定可展開或折疊的代碼塊#region和#endregion

#define和#undef定義和取消符號(hào),通常用于為#if指令傳遞條件表達(dá)式,#define的結(jié)果為true,#undef的結(jié)果為false#defineDEBUG#undefDEBUG

語(yǔ)法使用#define和#undef定義和取消符號(hào)時(shí),只能在代碼文件的頂部(所有引用命名空間的代碼之前)定義,如果在其他區(qū)域定義,會(huì)出現(xiàn)如圖所示的錯(cuò)誤提示。

#if、#elif、#else和#endif主要用來(lái)判斷符號(hào)是否已經(jīng)定義。結(jié)合使用#if、#else、#elif、#endif指令,可以根據(jù)一個(gè)或多個(gè)符號(hào)是否存在來(lái)包含或排除代碼,這在編譯調(diào)試版本的代碼或針對(duì)特定配置進(jìn)行代碼編譯時(shí),非常有用。#if塊不能與#region塊重疊,但是,可以將#region塊嵌套在#if塊內(nèi),或?qū)?if塊嵌套在#region塊內(nèi)。#if指令#elif指令#else指令#endif指令if語(yǔ)句elseif語(yǔ)句else語(yǔ)句if語(yǔ)句的結(jié)尾

#warning"生成警告信息"#warning和#error#error"生成錯(cuò)誤信息"

#line提示8

泛型主要內(nèi)容

類型參數(shù)T

泛型接口

泛型方法010203類型參數(shù)T

泛型的類型參數(shù)T可以看作是一個(gè)占位符,它不是一種類型,它僅代表了某種可能的類型。在定義泛型時(shí),T出現(xiàn)的位置可以在使用時(shí)用任何類型來(lái)代替。類型參數(shù)T的命名準(zhǔn)則如下:使用描述性名稱命名泛型類型參數(shù),除非單個(gè)字母名稱完全可以讓人了解它表示的含義,而描述性名稱不會(huì)有更多的意義。例如,使用代表一定意義的單詞作為類型參數(shù)T的名稱,代碼如下:publicinterfaceIStudent<TStudent>publicdelegatevoidShowInfo<TKey,TValue>將T作為描述性類型參數(shù)名的前綴。例如,使用T作為類型參數(shù)名的前綴,代碼如下:publicinterfaceIStudent<T>{TSex{get;}}泛型接口

聲明泛型接口時(shí),與聲明一般接口的唯一區(qū)別是增加了一個(gè)<T>。一般來(lái)說(shuō),聲明泛型接口與聲明非泛型接口遵循相同的規(guī)則。泛型類型聲明所實(shí)現(xiàn)的接口必須對(duì)所有可能的構(gòu)造類型都保持唯一,否則就無(wú)法確定該為某些構(gòu)造類型調(diào)用哪個(gè)方法。interface【接口名】<T>{

【接口體】}語(yǔ)法泛型方法

泛型方法是在聲明中包括了類型參數(shù)T的方法。泛型方法可以在類、結(jié)構(gòu)或接口聲明中聲明,這些類、結(jié)構(gòu)或接口本身可以是泛型或非泛型。如果在泛型類型聲明中聲明泛型方法,則方法體可以同時(shí)引用該方法的類型參數(shù)T和包含該方法的聲明的類型參數(shù)T?!拘揎椃?/p>

void【方法名】<類型型參T>{

【方法體】}語(yǔ)法小結(jié)本章對(duì)面向?qū)ο缶幊痰母呒?jí)知識(shí)進(jìn)行了詳細(xì)講解,學(xué)習(xí)本章內(nèi)容,重點(diǎn)需要掌握的是類的繼承與多態(tài)、接口的使用、集合以及泛型的使用,難點(diǎn)是委托和事件的應(yīng)用,另外,對(duì)結(jié)構(gòu)、索引器、異常處理和預(yù)處理指令等知識(shí)點(diǎn),熟悉它們的使用方法即可。上機(jī)指導(dǎo)

模擬實(shí)現(xiàn)輸出進(jìn)銷存管理系統(tǒng)中的每月銷售明細(xì),運(yùn)行程序,輸入要查詢的月份,如果輸入的月份正確,則顯示本月商品銷售明細(xì);如果輸入的月份不存在,則提示“該月沒(méi)有銷售數(shù)據(jù)或者輸入的月份有誤!”信息;如果輸入的月份不是數(shù)字,則顯示異常信息。。第5章Windows應(yīng)用程序開發(fā)01開發(fā)應(yīng)用程序的步驟02Windows窗體介紹03Windows控件的使用04菜單、工具欄與狀態(tài)欄05對(duì)話框06多文檔界面(MDI)07打印與打印預(yù)覽1

開發(fā)應(yīng)用程序的步驟開發(fā)應(yīng)用程序的步驟

使用C#開發(fā)應(yīng)用程序時(shí),一般包括創(chuàng)建項(xiàng)目、界面設(shè)計(jì)、設(shè)置屬性、編寫程序代碼、保存項(xiàng)目、程序運(yùn)行等6個(gè)步驟。2

Windows窗體介紹主要內(nèi)容

添加窗體

設(shè)置啟動(dòng)窗體

設(shè)置窗體屬性

窗體常用方法01020304

窗體常用事件05

如果要向項(xiàng)目中添加一個(gè)新窗體,可以在項(xiàng)目名稱上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加”/“Windows窗體”或者“添加”/“新建項(xiàng)”菜單,打開“添加新項(xiàng)”對(duì)話框,選擇“Windows窗體”選項(xiàng),輸入窗體名稱后,單擊“添加”按鈕,即可向項(xiàng)目中添加一個(gè)新的窗體。添加窗體publicstaticvoidRun(FormmainForm)設(shè)置啟動(dòng)窗體語(yǔ)法

向項(xiàng)目中添加了多個(gè)窗體以后,如果要調(diào)試程序,必須要設(shè)置首先運(yùn)行的窗體,這時(shí)就需要設(shè)置項(xiàng)目的啟動(dòng)窗體。項(xiàng)目的啟動(dòng)窗體是在Program.cs文件中設(shè)置的,在Program.cs文件中改變Run方法的參數(shù),即可實(shí)現(xiàn)設(shè)置啟動(dòng)窗體。Run方法用于在當(dāng)前線程上開始運(yùn)行標(biāo)準(zhǔn)應(yīng)用程序,并使指定窗體可見。設(shè)置窗體屬性更換窗體的圖標(biāo)——Icon屬性隱藏窗體的標(biāo)題欄——FormBorderStyle屬性控制窗體的顯示位置——StartPosition屬性修改窗體的大小——Size屬性設(shè)置窗體背景圖片——BackgroundImage屬性控制窗體總在最前——TopMost屬性窗體常用方法

Show方法——顯示窗體publicvoidShow()publicvoidShow(IWin32Windowowner)

Hide方法——隱藏窗體publicvoidHide()

Close方法——關(guān)閉窗體publicvoidClose()窗體常用事件

Load事件——窗體加載privatevoidForm1_Load(objectsender,EventArgse){}

FormClosing事件——窗體關(guān)閉時(shí)觸發(fā)privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){}3Windows控件的使用主要內(nèi)容

Control基類

Label

Button

TextBox01020304

CheckBox05

RadioButton06

RichTextBox07

ComboBox08

ListBox09

GroupBox10

ListView11

TreeView12

ImageList13

Timer14Control基類語(yǔ)法

Control類是定義控件的基類,控件是帶有可視化表示形式的組件。Control類實(shí)現(xiàn)向用戶顯示信息的類所需的最基本功能,它處理用戶通過(guò)鍵盤和指針設(shè)備所進(jìn)行的輸入,另外,它還處理消息路由和安全。Control類的成員可以通過(guò)VisualStudio幫助查看。Label控件語(yǔ)法

Label控件,又稱為標(biāo)簽控件,它主要用于顯示用戶不能編輯的文本,標(biāo)識(shí)窗體上的對(duì)象(例如,給文本框、列表框添加描述信息等),另外,也可以通過(guò)編寫代碼來(lái)設(shè)置要顯示的文本信息。1.設(shè)置標(biāo)簽文本label1.Text="用戶名:";

2.顯示/隱藏控件label1.Visible=true;Button控件

Button控件,又稱為按鈕控件,它表允許用戶通過(guò)單擊來(lái)執(zhí)行操作。Button控件既可以顯示文本,也可以顯示圖像,當(dāng)該控件被單擊時(shí),它看起來(lái)像是被按下,然后被釋放。Button控件最常用的是Text屬性,其中,Text屬性用來(lái)設(shè)置Button控件顯示的文本,Click事件用來(lái)指定單擊Button控件時(shí)執(zhí)行的操作。TextBox控件

TextBox控件,又稱為文本框控件,它主要用于獲取用戶輸入的數(shù)據(jù)或

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論