C#語言程序設(shè)計(jì)解析_第1頁
C#語言程序設(shè)計(jì)解析_第2頁
C#語言程序設(shè)計(jì)解析_第3頁
C#語言程序設(shè)計(jì)解析_第4頁
C#語言程序設(shè)計(jì)解析_第5頁
已閱讀5頁,還剩100頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C#語言程序設(shè)計(jì)

第1章c#語言及其開發(fā)環(huán)境

1.1C#簡(jiǎn)介

1.1.1什么是.NET框架

.NET框架(.NETFramework)的主要版本有1.0、2.0、3.0、4.0等,其內(nèi)容主要包含4部

?通用語言運(yùn)行時(shí)(CommonLanguageRuntime,簡(jiǎn)稱CLR):它定義了一個(gè)代碼運(yùn)

行的環(huán)境。CLR運(yùn)行一種稱為通用中間語言的字節(jié)碼,這個(gè)是微軟的通用中間語

言實(shí)現(xiàn)版本。

?.NET基礎(chǔ)類庫(kù):簡(jiǎn)單地說,.NET基礎(chǔ)類庫(kù)是一套函數(shù)庫(kù)。

?.NET開發(fā)語言:C#,VisualBasic,C++等。

?VisualStudio.NET集成開發(fā)環(huán)境:它是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,包括

代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具?集成了代碼編寫功能、分析功

能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)。

1.1.2C幅言特點(diǎn)

1.語法簡(jiǎn)單

2.面向?qū)ο?/p>

3.與Web應(yīng)用緊密結(jié)合

4.強(qiáng)大的安全機(jī)制

5.兼容性

1.2C#i吾言開發(fā)環(huán)境

1.2.1VisualStudio.NET開發(fā)環(huán)境的版本及安裝

VisualStudio.NET開發(fā)環(huán)境的主要版本有:2001、2003、2005、2008、2010、2012、2015

等。其運(yùn)行環(huán)境為Windows操作系統(tǒng)。通過.NET軟件包中安裝程序可自行安裝.NET類庫(kù)、

CLR、開發(fā)語言、開發(fā)環(huán)境等。

1.2.2VisualStudio.NET2010開發(fā)環(huán)境

VisualStudio.NET2010開發(fā)環(huán)境主要有以下區(qū)域組成:菜單、工具箱面板、主編輯區(qū)、

解決方案面板、屬性面板、輸出面板。

1.3開始C#的第一步

1.3.1創(chuàng)建控制臺(tái)應(yīng)用程序

L在U盤指定根目錄創(chuàng)建一控制臺(tái)應(yīng)用程序。

2.打開解決方案資源管理器

其中:

?AssemblyInfo.cs:保存項(xiàng)目信息。

?引用文件夾:列出了該項(xiàng)目中應(yīng)用的所有類庫(kù)。

?Program.cs:包含了程序啟動(dòng)的靜態(tài)方法。代碼如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplicationl

(

classProgram

(

staticvoidMain(string[]args)

(

Console.WriteLine("第一個(gè)控制臺(tái)「應(yīng)用程序”);

)

)

)

說明:1.各關(guān)鍵字;2.Write和WriteLine方法;3.Ctrl+F5及Dos下其它exe程序的運(yùn)

行方法。

習(xí)題:創(chuàng)建控制臺(tái)應(yīng)用程序,要求輸入自己名字,然后打印出歡迎文字。

提示:

stringname=Console.ReadLineO;

Console.WriteLine("歡迎"+name+"光臨");

1.3.2創(chuàng)建Windows窗體應(yīng)用程序

1.在U盤指定根目錄創(chuàng)建一Windows應(yīng)用程序。

2.打開解決方案資源管理器

解決方案資源管理器▼口X

匾I0團(tuán)|國(guó)國(guó)第

國(guó)TindovsForasApplic&tionl

QijrProperties

嗎Assemblyinfo,cs

E)易R(shí)esources,resx

藥Resources.Designer,cs

Q目Settings,settings

喝Settings.Designer,cs

田ddt引用

Forml.cs

刃Forml.Designer.cs

圖Program,cs

其中:

?Resources.resx和Resources.Designer.es:窗體資源文件。

?Settings.settings和Settings.Designer.cs:項(xiàng)目屬性配置文件。

?Program.cs:包含了程序啟動(dòng)的靜態(tài)方法。代碼如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Windows.Forms;

namespaceWindowsFormsApp1ication1

(

staticclassProgram

(

III<summary>

III應(yīng)用程序的主入口點(diǎn)

///</summary>

[STAThread]

staticvoidMain()

(

App1ication.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

AppIication.Run(newForm1());

)

)

i

說明:

1.[STAThread]屬性;

2.Run方法。

3.從工具箱中拖一標(biāo)簽控件到窗體中,并設(shè)置相應(yīng)屬性后運(yùn)行程序。

習(xí)題:創(chuàng)建Windows窗體應(yīng)用程序,要求在文本框中輸入自己名字,單擊命令按鈕后,

在標(biāo)簽中顯示出歡迎文字。

1.3.3創(chuàng)建Web應(yīng)用程序

1.在U盤指定根目錄創(chuàng)建一Web應(yīng)用程序。

2.打開解決方案資源管理器

其中:Web.config:網(wǎng)站配置文件,在首次運(yùn)行網(wǎng)站時(shí)會(huì)提示修改該文件。

3.添加一HTML文件,輸入信息后,瀏覽該文件。

4.從工具箱中拖一標(biāo)簽控件到窗體中,并設(shè)置相應(yīng)屬性后運(yùn)行程序。

習(xí)題:創(chuàng)建Web窗體應(yīng)用程序,要求在文本框中輸入自己名字,單擊命令按鈕后,在

標(biāo)簽中顯示出歡迎文字。

第2章C#語法基礎(chǔ)

C#語言的語法與C語言語法基本相同。C#語言在心文件的類中書寫。

2.1常量和變量

2.1.1聲明變?

變量命名規(guī)則與C語言基本相同。

例:

inti;

inta=100;

charc;

strings;

stringsi="這是一串字符”;

Console.WriteLine(a);

Console.WriteLine(si):

2.1.2聲明常■

常量一旦初始化后就不能再改變其內(nèi)容。

例:

constdoublePI=3.1415;//聲明常量

doubler=3.2;〃聲明變量

doublearea=PI*r*r;//定義變量并計(jì)算面積

Console.WriteLine(area);//輸出到控制臺(tái)中

在變量定義賦值格式前加上const關(guān)鍵字就是定義常量。此外,還可在const前加public,

private等關(guān)鍵字用以限定常量被訪問的范圍。

2.2數(shù)據(jù)類型

c#中數(shù)據(jù)類型可分為兩類:

值類型:該類型的數(shù)據(jù)長(zhǎng)度固定,存放于棧內(nèi)。如:int、float等。

引用類型:該類型的長(zhǎng)度可變,存放于堆中。如:siring、數(shù)組等。

2.3值類型

值類型包括:整數(shù)類型、浮點(diǎn)類型、字符類型、布爾類型、結(jié)構(gòu)類型和枚舉類型。

2.3.1整數(shù)類型

C#支持8種整數(shù)類型。

名稱CTS類型說明范圍

sbyteSystem.SByte8位有符號(hào)整數(shù)-128?127(-27-27-1)

shortSystem.Intl616位有符號(hào)整數(shù)—32768?32767(-215-215-1)

intSystem.Int3232位有符號(hào)整數(shù)一231?231T

longSystem.Int6464位有符號(hào)整數(shù)-263-263-1

byteSystem.Byte8位無符號(hào)整數(shù)0-255(0-28-1)

ushortSystem.Uintl616位無符號(hào)整數(shù)0-65535(0—216-1)

uintSystem.Uint3232位無符號(hào)整數(shù)0-232-1

ulongSystem.Uint6464位無符號(hào)整數(shù)0-264-1

例:

intsi=-10;//聲明變量并賦值

ints2=100;//聲明變量并賦值

ints3=s2-si;//聲明變量并設(shè)置運(yùn)算方法

//輸出運(yùn)算結(jié)果

Console.Write("計(jì)算結(jié)果為");

Console.WriteLine(s3);

2.3.2浮點(diǎn)類型

C#的浮點(diǎn)型包括:float(Single)和double。float類型可表示精度為7位、在大約1.5x

10-45至lj3.4x1038的范圍內(nèi)的值。double類型可表示精度為15位或16位、在大約5.0

x10-324到1.7x10308的范圍內(nèi)的值。

例:

floatf;

doubled=3.14159;

浮點(diǎn)型精度較低,不推薦兩個(gè)浮點(diǎn)型之間比較大小的判斷。

2.3.3decimal類型

decimal類型可以表示具有28或29個(gè)有效數(shù)字、從1.0X10-28到大約7.9X

1028范圍內(nèi)的值。decimal類型是采用四舍六入五考慮的銀行家舍入法進(jìn)行計(jì)算的,decimal

類型是適合財(cái)務(wù)和貨幣計(jì)算的128位數(shù)據(jù)類型。

說明:float是單精度,double是雙精度,decimal是數(shù)字型,它們所占的內(nèi)存空間不一

樣,表示的位數(shù)也不一樣。除了科學(xué)計(jì)算以外,一般不用double型的。對(duì)于數(shù)字(包括小

數(shù))一般用decimal型的。

2.3.4字符類型

C#的字符型可以保存單個(gè)字符的值。與C語言相同,C#中也有轉(zhuǎn)義字符,如:\\\r等。

例:

charcl='C';

2.3.5布爾類型

C#的布爾型是bool,其取值包括true和false。

例:

boolb=true;

Console.WriteLine(b);

2.3.6結(jié)構(gòu)類型

除去上面介紹的簡(jiǎn)單值類型之外,用戶還可以定義復(fù)合值類型。常用的復(fù)合值類型包括

結(jié)構(gòu)和枚舉,首先來看結(jié)構(gòu)。

一個(gè)結(jié)構(gòu)(struct)是包含多個(gè)基本類型或復(fù)合類型的統(tǒng)一體,在C#中可以使用struct

關(guān)鍵字創(chuàng)建結(jié)構(gòu),例如,一個(gè)學(xué)生信息結(jié)構(gòu)如下。

///<summary>

///學(xué)生信息結(jié)構(gòu)

III</summary>

publicstructStudent

(

publiclongSid;〃學(xué)號(hào)

publicstringSname;〃姓名

publicdoubleScore;〃成績(jī)

結(jié)構(gòu)和類基本相同,其定義位置與類相同。與類相比,結(jié)構(gòu)有如下優(yōu)點(diǎn):

?結(jié)構(gòu)占用堆內(nèi)存,操作效率高。

?結(jié)構(gòu)使用完自動(dòng)釋放內(nèi)存。

?結(jié)構(gòu)易復(fù)制,可使用等號(hào)將一結(jié)構(gòu)賦給另一結(jié)構(gòu)。

定義好類后,可在如下類中調(diào)用Student:

classProgram

(

staticvoidMain(string口args)

(

Students=newStudent();//創(chuàng)建一個(gè)結(jié)構(gòu)對(duì)象

//設(shè)置對(duì)象的屬性學(xué)好姓名成績(jī)

s.Sid=1;

s.Sname="張三”;

s.Score=80;

//輸出到控制臺(tái)中并顯示出來

Console.WriteLine(s.Sid);

Console.WriteUne(s.Sname);

Console.WriteLine(s.Score);

)

)

習(xí)題:仿照上述示例,自行定義一結(jié)構(gòu)類型(如:學(xué)生、課程、教室、汽車等),并在

主函數(shù)中調(diào)用該類型。

2.3.7枚舉類型

枚舉(enum)其實(shí)是一個(gè)整數(shù)類型,用于定義一組基本整數(shù)數(shù)據(jù),并可以給每個(gè)整數(shù)

指定一個(gè)便于記憶的名字。以下代碼聲明了一個(gè)星期枚舉類型。

例:

classProgram

(

staticvoidMain(string[]args)

{

//聲明一個(gè)變量

inti=int.Parse(Console.ReadLine());

//條件分支語句

switch(i)

{

case(int)enumWeek.Sunday:〃返I可

Console.WriteLine("今天不上班");

break;

case(int)enumWeek.Monday:〃返回

Console.WriteLine("開始上班”);

break;

case(int)enumWeek.Thuesday:〃返回

Console.WriteLine(“去見客戶");

break;

default:

break;

)

)

)

III<summary>

///星期枚舉

III</summary>

publicenumenumWeek

(

Sunday=0,

Monday=1,

Thuesday=2,

Wedensday=3,

Thursday=4,

Friday=5,

Saturday=6

)

習(xí)題:仿照上述示例,自行定義一枚舉類型(如:星期、職務(wù)、學(xué)歷等),并在主函數(shù)

中調(diào)用該類型。

2.4引用類型

c#不允許在安全代碼中使用指針,因此要處理堆中的數(shù)據(jù)就需要使用引用數(shù)據(jù)類型,

使用new關(guān)鍵字實(shí)例化引用數(shù)據(jù)類型的對(duì)象,并指向堆中的對(duì)象數(shù)據(jù)。例如:

Objl=newObj();

Objl即指向堆中的Obj對(duì)象。對(duì)象的使用方法將在后面章節(jié)中詳細(xì)介紹,此處,首先

了解一下C#中內(nèi)置的一些引用數(shù)據(jù)類型。

2.4.1什么是引用類型

與值類型不同,引用類型存儲(chǔ)的并不是真正的數(shù)值,而是數(shù)值地址的引用。舉個(gè)生活中

的例子來比較引用類型與值類型。

值類型就好比書架上的書籍,看的時(shí)候,直接拿過來就可以了。而引用類型就相當(dāng)于存

儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的書目或索引,查到的只是某一本書的索引和信息,而不是真正書架上的

書。如果想要獲取這本書,就需要根據(jù)書的索引信息,找到書架上的位置,然后去取。

計(jì)算機(jī)內(nèi)存分為兩種存儲(chǔ)方式:堆和棧。堆存儲(chǔ)的是引用類型,而棧存儲(chǔ)的則是值類型。

2.4.2引用類型的應(yīng)用場(chǎng)合

引用類型包括了內(nèi)置引用類型、數(shù)組以及類等。

1.內(nèi)置引用類型

?Object類型:保存引用對(duì)象的32位(4字節(jié))地址??梢詾镺bject的變量分配任

何引用類型(字符串、數(shù)組、類或接口)。Object變量還可以引用任何值類型(數(shù)值、Boolean、

Char、Date、結(jié)構(gòu)或枚舉)的數(shù)據(jù)。

例:

inta=3;

Objecto=a;

Console.WriteLine(o);

?String類型:該類型用于存放字符串。字符串是Unicode字符的有序集合,用于表

示文本。String對(duì)象稱為不可變的(只讀),因?yàn)橐坏﹦?chuàng)建了該對(duì)象,就不能修改該對(duì)象的

值??磥硭坪跣薷牧薙tring對(duì)象的方法實(shí)際上是返回一個(gè)包含修改內(nèi)容的新String對(duì)象。

如果需要修改字符串對(duì)象的實(shí)際內(nèi)容,請(qǐng)使用StringBuilder類。

例:

strings="abcdefg”;

Gonsole.WriteLine(s);

2.數(shù)組

數(shù)組是相同類型的對(duì)象的集合。由于數(shù)組幾乎可以為任意長(zhǎng)度,因此可以使用數(shù)組存儲(chǔ)

數(shù)千乃至數(shù)百萬個(gè)對(duì)象,但必須在創(chuàng)建數(shù)組時(shí)就確定其大小。數(shù)組元素索引從0開始。

例:

int[]array=newint[5];

int[]array1=newint[]{1,3,5,7,9};

intf]array2={1,3,5,7,9);

例:

string[]days={"SunH,,(Monn,,'TueH,?'Wed",MThrn,"Frin,"Sat"!;

System.Console.WriteLine(days[0]);//Outputs"Sun"

例:多維數(shù)組

//declaremultidimensionarray(twodimensions)

int[,]array2D=newint[2,3];

//deciareandinitializemultidimensionarray

int[,]array2D2={{1,2,3},{4,5,6}};

//writeelementsinamultidimensionalarray

for(inti=0;i<2;i++)

(

for(intj=0;j<3;j++)

(

array2D[i,j]=(i+1)*(j+1);

)

}

//readelementsinamultidimensionalarray

for(inti=0;i<2;i++)

(

for(intj=0;j<3;j++)

System.Console.Write(array2D[i,j]);

)

System.Console.WriteLineO;

習(xí)題:利用數(shù)組對(duì)十個(gè)整數(shù)進(jìn)行排序后輸出0

3.類、接口

類是C#中功能最為強(qiáng)大的數(shù)據(jù)類型。像結(jié)構(gòu)一樣,類也定義了數(shù)據(jù)類型的數(shù)據(jù)和行

為。然后,程序員可以創(chuàng)建作為此類的實(shí)例的對(duì)象。與結(jié)構(gòu)不同,類支持繼承,而繼承是面

向?qū)ο缶幊痰幕A(chǔ)部分。后續(xù)內(nèi)容將更詳細(xì)介紹。

接口描述的是可屬于任何類或結(jié)構(gòu)的一組相關(guān)功能。

2.5類型轉(zhuǎn)換

在高級(jí)語言中,數(shù)據(jù)類型是很重要的一個(gè)概念,只有具有相同數(shù)據(jù)類型的對(duì)象才能夠互

相操作。很多時(shí)候,為了進(jìn)行不同類型數(shù)據(jù)的運(yùn)算(如整數(shù)和浮點(diǎn)數(shù)的運(yùn)算等),需要把數(shù)

據(jù)從一種類型轉(zhuǎn)換為另一種類型,即進(jìn)行類型轉(zhuǎn)換。c#有兩種轉(zhuǎn)換方式。

?隱式轉(zhuǎn)換:編譯系統(tǒng)自動(dòng)轉(zhuǎn)換。

?顯式轉(zhuǎn)換:需要指定轉(zhuǎn)換類型。

2.5.1隱式轉(zhuǎn)換

當(dāng)兩個(gè)不同類型的操作數(shù)進(jìn)行運(yùn)算時(shí),編譯器會(huì)試圖對(duì)其進(jìn)行自動(dòng)類型轉(zhuǎn)換,使兩者變

為同一類型。但是,不同的數(shù)據(jù)類型具有不同的存儲(chǔ)空間,如果試圖將一個(gè)需要較大存儲(chǔ)空

間的數(shù)據(jù),轉(zhuǎn)換為存儲(chǔ)空間較小的數(shù)據(jù),就會(huì)出現(xiàn)錯(cuò)誤.例如:

intresult;

longvall=l;

longva!2=2;

result=vall+val2;

c#支持的隱式轉(zhuǎn)換的數(shù)據(jù)類型如下表:

源類型目的類型

sbyteshort、int>long、float、double、decimal

byteshort、ushort>int、uint>ulong>float、double^decimal

shortint>long>floatAdouble>decimal

ushortint>uint、long>ulong、floatdouble、decimal

intlong>float、double>decimal

uintlong>ulong>float>decimal

long>ulongfloat、double>decimal

floatdouble

charushort、int、uint、long、ulong、float>double、decimal

2.5.2顯式轉(zhuǎn)換

顯示類型轉(zhuǎn)換,又叫做強(qiáng)制類型轉(zhuǎn)換。在有些情況下,編譯器不能夠隱式轉(zhuǎn)換數(shù)據(jù)類型。

但由于某種原因,程序員必須要進(jìn)行這樣的操作,那么,這時(shí)就需要顯式轉(zhuǎn)換數(shù)據(jù)類型,強(qiáng)

迫編譯器進(jìn)行轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換的方式有多種,以下舉例說明:

longal=100;

inta2=(int)al;

stringbl="100";

intb2=int.Parse(bl);

doublecl=3.14159;

intc2=Convert.Tolnt32(cl);

習(xí)題:在窗體中編寫一對(duì)兩個(gè)數(shù)進(jìn)行加減乘除的計(jì)算器。

2.5.3裝箱和拆箱

隱式和顯示類型轉(zhuǎn)換屬于不同值類型之間的轉(zhuǎn)換,而如果要在值類型和引用類型之間轉(zhuǎn)

換,則需要了解裝箱和拆箱的操作。

確切地說,裝箱和拆箱的過程是值類型與Object類型之間的轉(zhuǎn)換。裝箱是把值類型轉(zhuǎn)

換為Object類型,而拆箱則相反,把Object類型轉(zhuǎn)換為值類型。如下面的代碼就是一個(gè)裝

箱和拆箱的過程,代碼如下所示。

inta=0;

Objectobj=a;

intb=(int)obj;

2.6類型檢查

為了避免在數(shù)據(jù)類型轉(zhuǎn)換時(shí),出現(xiàn)異常,有必要在類型轉(zhuǎn)換之前,進(jìn)行類型檢查。c#

中提供了有關(guān)兩個(gè)類型檢查的運(yùn)算符:is和as。is運(yùn)算符用來類型轉(zhuǎn)換前的兼容性檢查,而

as運(yùn)算符是在轉(zhuǎn)換過程中類型兼容性的檢查。本節(jié)將介紹這兩個(gè)運(yùn)算符及其應(yīng)用。

2.6.1is運(yùn)算符

is運(yùn)算符用來檢查對(duì)象是否與制定的類型兼容或一致,其運(yùn)算結(jié)果為邏輯值。

例:

intobj=100;

if(objisint)〃可改變int為其它類型進(jìn)行測(cè)試

Console.WriteLine(obj);

2.6.2as運(yùn)算符

as運(yùn)算符的作用是執(zhí)行顯示類型轉(zhuǎn)換,as運(yùn)算符首先會(huì)檢查類型是否兼容,如果兼容

則開始轉(zhuǎn)換,并獲得正確轉(zhuǎn)換后的結(jié)果,否則返回null。所以,使用as運(yùn)算符可以進(jìn)行安

全的類型轉(zhuǎn)換,而不會(huì)在運(yùn)行時(shí)因?yàn)楫惓6K止程序的運(yùn)行。

as運(yùn)算符的語法格式同is運(yùn)算符相同,as關(guān)鍵字的前面是變量,后面是類型。語法格

式如下所示。

變量as數(shù)據(jù)類型

如下面的代碼所示,使用as運(yùn)算符轉(zhuǎn)換兩種不同類型,獲得不同的結(jié)果。

objectobj=''hello";

stringstr=objasstring;

inti=objasint;〃結(jié)果為null

例:

objectol="SomeString”;

objecto2=5;

stringsi=olasstring;

strings2=o2asstring;

Console.WriteLine('字符串si的值為:{0}”,si);

Console.WriteLine("字符串s2的值為:{0}〃,s2);〃null值

2.7運(yùn)算符

運(yùn)算符通常是編譯器定義的,所以不同語言的運(yùn)算符寫法上可能會(huì)不同。但是大多數(shù)高

級(jí)語言的運(yùn)算符定義同數(shù)學(xué)一樣,有著加、減、乘、除的運(yùn)算,平方、開放、平方根等運(yùn)算。

除了這些基礎(chǔ)數(shù)學(xué)中的運(yùn)算之外,還包括了和計(jì)算機(jī)二進(jìn)制相關(guān)的運(yùn)算符,如移位運(yùn)算。

每種語言的編譯器不同,所以可能定義的寫法不同。本節(jié)將要介紹c#中運(yùn)算符的應(yīng)用,

主要包括了算數(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系邏輯運(yùn)算符等。

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

算數(shù)運(yùn)算是數(shù)學(xué)中的基礎(chǔ)運(yùn)算,包括了加、減、乘、除等比較熟悉的運(yùn)算方式。除此之

外,還包括了累加和遞減的運(yùn)算,這是數(shù)學(xué)中沒有的。

符號(hào)示例意義

+a+b加法運(yùn)算

—a-b減法/取負(fù)運(yùn)算

*a*b乘法運(yùn)算

/a/b除法運(yùn)算

%a%b取余數(shù)

++a++累加

—a—遞減

說明:兩個(gè)整數(shù)相除的結(jié)果始終為一個(gè)整數(shù)。例如,5除以2的結(jié)果為2。若要獲取

作為有理數(shù)或分?jǐn)?shù)的商,應(yīng)將被除數(shù)或除數(shù)設(shè)置為float類型或double類型??梢酝ㄟ^在

數(shù)字后添加一個(gè)小數(shù)點(diǎn)來隱式執(zhí)行此操作。

例:

Console.WriteLine(5/2);

Console.WriteLine(5/2.1);

Console.WriteLine(5.1/2);

Console.WriteLine(-5/2);

2.7.2賦值運(yùn)算符

賦值運(yùn)算符最常用的就是等號(hào),即將右邊變量的值賦值給左邊的變量。除此之外,C#

中還定義了與賦值相結(jié)合的復(fù)合運(yùn)算符:+=、-=、*=、/=、%=。

2.7.3關(guān)系與邏輯運(yùn)算符

關(guān)系和邏輯運(yùn)算符大都用在條件判斷時(shí)。

符號(hào)示例為真條件

<a<b當(dāng)a的值小于b值時(shí)

>a>b當(dāng)a的值大于b值時(shí)

<=a<=b當(dāng)a的值小于或等于b值時(shí)

>=a>=b當(dāng)a的值大于或等于b值時(shí)

==a==b當(dāng)a的值等于b值時(shí)

!=a!=b當(dāng)a的值不等于b值時(shí)

&&a&&b當(dāng)a為真并且b都為真時(shí)

IIa||b當(dāng)a為真或者b都為真時(shí)

!!a當(dāng)a為假時(shí)

2.7.4其他運(yùn)算符

符號(hào)示例意義

newnewClassi();創(chuàng)建一個(gè)類的實(shí)例

typeoftypeof(int);獲取數(shù)據(jù)類型說明

Obj.method();獲取對(duì)象的方法或?qū)傩?/p>

?:(exprl)?(expr2):若exprl則expr2;否則

(expr3);expr3

例:

//聲明變量a和變量b

inta=29;

intb=30;

//聲明變量c,并使用條件運(yùn)算符判斷變量a和b的值

stringc=a>b?”變量a大于變量b":"變量a小于等于變量b”;

〃將結(jié)果輸出到控制臺(tái)中

Console.WriteLine(c);

習(xí)題:

1.使用三元運(yùn)算符判斷分?jǐn)?shù)是否及格。

2.使用三元運(yùn)算符嵌套,計(jì)算折扣。要求:如果顧客消費(fèi)滿100元,打9折;滿300

元,打8折;滿500元,打7折。

2.7.5運(yùn)算符的優(yōu)先級(jí)

運(yùn)算符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先計(jì)算。算術(shù)中四則運(yùn)算時(shí)“先乘

除,后加減”便是運(yùn)算符優(yōu)先級(jí)的很好體現(xiàn)。

C#根據(jù)運(yùn)算符的優(yōu)先級(jí)確定表達(dá)式的求值順序:優(yōu)先級(jí)高的運(yùn)算先做,優(yōu)先級(jí)低的操

作后做,相同優(yōu)先級(jí)的操作從左到右依次做,同時(shí)用小括號(hào)控制運(yùn)算順序,任何在小括號(hào)內(nèi)

的運(yùn)算最優(yōu)先進(jìn)行。

級(jí)別運(yùn)算符

1new、typeof

2賦值運(yùn)算符

3II、&&

41、A

5&

6+、-(加、減運(yùn)算符)

7/、*、%

8<<、?

9++、——

10+、-、(正、負(fù)號(hào)運(yùn)算符)!

11==,!=,<>

12<,<=,>,>=

13?:

2.8小結(jié)

本章主要介紹了數(shù)據(jù)類型的相關(guān)知識(shí),包括了值類型和引用類型,并詳細(xì)講解了如何使

用。在本章的最后,還介紹了類型轉(zhuǎn)換,隱式類型轉(zhuǎn)換和顯示類型轉(zhuǎn)換。本章的重點(diǎn)在于如

何聲明變量和常量,并在實(shí)際中應(yīng)用。本章的難點(diǎn)在于類型轉(zhuǎn)換和數(shù)據(jù)運(yùn)算。下一章將介紹

程序流程,詳細(xì)講解c#中的各種程序語句。

第3章流程控制

同其他高級(jí)語言類似,在處理事物之間邏輯關(guān)系的時(shí)候,都需要使用程序結(jié)構(gòu)。c#的

程序結(jié)構(gòu)除順序結(jié)構(gòu)外,主要有分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),另外,c#還支持無條件跳轉(zhuǎn)。本章

將會(huì)詳細(xì)講解C#程序流程中的各種結(jié)構(gòu)語句,包括條件語句、循環(huán)語句、跳轉(zhuǎn)語句和異常

語句等。

在本章中,將重點(diǎn)學(xué)習(xí)以下內(nèi)容:

使用條件語句;

使用循環(huán)語句;

使用跳轉(zhuǎn)語句;

使用異常語句;

3.1條件語句

C#中的條件語句主要有兩個(gè):if語句和switch語句。if語句是最常用的判斷語句,但是

在對(duì)同一個(gè)變量的不同值做條件判斷時(shí),使用switch語句效率會(huì)更高一些。

3.1.1if-else語句及應(yīng)用

if語句是最常用的條件語句,通過判斷布爾表達(dá)式的值,選擇執(zhí)行后面的內(nèi)嵌語句。if

語句有三種格式。

1.if格式

2.if…else格式

3.if...elseif格式

例:

stringnScore=Console.ReadLineO;

if(int.Parse(nScore)>=60)

(

Console.WriteLine("及格");

)

例:

stringnScore=Console.ReadLineO;

if(int.Parse(nScore)>=60)

(

Console.WriteLine("及格”);

)

else

{

Console.WriteLine("不及格");

)

例:

intnScore=int.Parse(Console.ReadUneO);

if(nScore>80)

(

Console.WriteLine(“優(yōu)秀”);

)

elseif(nScore>=60)

Console.WriteLine("及格");

else

Console.WriteLine("不及格〃);

)

習(xí)題:使用if語句判斷輸入的用戶名和密碼是否正確。假設(shè)用戶名和密碼分別為Admin、

123。

3.1.2switch語句及應(yīng)用

當(dāng)程序面臨多叉路口時(shí),就可以使用swtich語句進(jìn)行分支。例如,當(dāng)對(duì)一個(gè)學(xué)生評(píng)估

時(shí),可能會(huì)有多個(gè)選擇:60以下、60?69、70?79、80?89、90~100,需要視其分?jǐn)?shù)給予

不同評(píng)語,這時(shí)就可以使用swtich語句進(jìn)行分支。switch語句語法結(jié)構(gòu)為:

1.switch(variable)

2.(

3.casevalue1:

4.statement1

5.break;

6.casevalue2:

7.statement2

8.break;

9....

10.default:

11.statement

12.break;

13.}

例:

classProgram

(

staticvoidMain(string[]args)

(

intnWeekday=int.Parse(Console.ReadLineO);

〃使用switch

switch(nWeekday)

(

case(int)enumWeek.Monday:

Console.WriteLine("客戶提窠");

break;

case(int)enumWeek.Thuesday:

Console.WriteLine("菲菲的生日”);

break;

case(int)enumWeek.Wedensday:

Console.WriteLine("我要shopping");

break;

case(int)enumWeek.Thursday:

Console.WriteLine("去健身房");

break;

case(int)enumWeek.Friday:

Console.WriteLine("向Boss匯報(bào)工作”);

break;

case(int)enumWeek.Saturday:

Console.WriteLine(“我要吃!”);

break;

case(int)enumWeek.Sunday:

Console.WriteLine("周末歡”);

break;

default:

break;

)

}

}

//創(chuàng)建一個(gè)枚舉類型

enumenumWeek

{

Sunday=0,

Monday=1,

Thuesday=2,

Wedensday=3,

Thursday=4,

Friday=5,

Saturday=6

}

習(xí)題:輸入一成績(jī),根據(jù)成績(jī)值輸出成績(jī)檔次:優(yōu)、良、中、及格、不及格。要求使用

switchcase語句實(shí)現(xiàn)。

3.2循環(huán)語句

循環(huán)語句又稱為迭代語句,是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是:在給定條件成立時(shí),

反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱

為循環(huán)體。

3.2.1while語句及應(yīng)用

當(dāng)程序需要不停執(zhí)行某種功能,直到達(dá)到某種條件才停止,需要采用循環(huán)程序結(jié)構(gòu)。例

如,當(dāng)需要輸出100次“我不敢了”的時(shí)候,就需要用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。

while循環(huán)用來在指定的條件內(nèi),不斷地重覆指定的動(dòng)作。語法如下:

1.while(expression)

2.

3.statement

4.)

例:求1到100的和。

ints=0,i=l;

while(i<=100)

(

s+=i;

i++;

}

Console.Write(s);

3.2.2do...while語句及應(yīng)用

例:求1到100的和。

ints=0,i=l;

do

(

s+=i;

i++;

)

whi1e(i<=100);

Console.Write(s);

3.2.3for語句及應(yīng)用

for語句同樣是用來實(shí)現(xiàn)循環(huán)結(jié)構(gòu),同while功能類似,語法為:

1.fbr(expression1;expression!;expressions)

2.(

3.statement

4.)

例:求1到100的和。

ints=0;

for(inti=l;i<=100;i++)

(

s+=i;

)

Console.Write(s);

3.3使用跳轉(zhuǎn)語句

跳轉(zhuǎn)語句提供了程序之間跳轉(zhuǎn)執(zhí)行的功能。在某些條件和需求下,跳轉(zhuǎn)語句可以使得編

寫代碼更加靈活、方便和有效。C#中的跳轉(zhuǎn)語句包括了break、continue、return和goto等,

其中g(shù)oto語句不建議使用。

3.3.1break語句及應(yīng)用

break語句常常出現(xiàn)在循環(huán)語句中,其作用是可以終止當(dāng)前所在的循環(huán)語句。break語句

也可以被應(yīng)用在switch判斷條件語句中,可以終止其所在的case條件,并跳出當(dāng)前switch

語句。

例:

inti;

for(i=0;i<10;1++)

(

Console.WriteLine("循環(huán)次數(shù):"+i.ToStringO);

//判斷循環(huán)次數(shù)是否為8次

if(i=8)

{

Console.WriteLine(〃循環(huán)8次后跳出for語句〃);

break;

)

)

3.3.2continue語句及應(yīng)用

continue語句經(jīng)常配合循環(huán)語句一起使用,其作用是終止當(dāng)前循環(huán),而繼續(xù)下一次循環(huán)。

與break語句不同的是,continue語句不是終止當(dāng)前的語句,只是終止當(dāng)前的循環(huán),繼而執(zhí)

行下一次的循環(huán)。

例:

inti;

for(i=0;i<10;i++)

(

if(i<8)

(

continue;

)

Console.WriteLine(i);

)

習(xí)題:

1.求二個(gè)整數(shù)的最大公約數(shù)。

2.判斷一個(gè)整數(shù)是否為素?cái)?shù)。

3.7個(gè)評(píng)委對(duì)選手評(píng)分,去掉一個(gè)最高分和一個(gè)最低分,剩下5個(gè)評(píng)委的平均分為選手

的得分。試在7個(gè)文本框中輸入7個(gè)分?jǐn)?shù),單擊一按鈕后顯示選手得分。

3.3.3return語句及應(yīng)用

return語句一般都是應(yīng)用在方法中,終止下面的執(zhí)行代碼,并將控制返回給調(diào)用方法。

return語句還可以返回一個(gè)可選值,如果沒有返回值,則調(diào)用方法為void類型。

例:

classProgram

staticvoidMain(string[]args)

(

intradius=18;//聲明半徑變量radius

〃調(diào)用方法CalculateArea。,計(jì)算圓的面積,并輸出到控制臺(tái)中

Console.WriteLine("輸出結(jié)果為:");

Console.WriteLine("計(jì)算后的面積是{0:0.00}**,CalculateArea(radius));

*計(jì)算圓形的面積

*@paramr圓的半徑

*@retum圓的面積

*/

staticdoubleCa1cu1ateArea(intr)

(

doublearea=r*r*Math.PI;

returnarea;

)

)

習(xí)題:設(shè)有兩半徑分別為20和10的同心圓,試?yán)蒙侠髨A面積的函數(shù)求兩同心圓構(gòu)

成的環(huán)形面積。

3.4使用異常語句

程序中的異常是指,當(dāng)程序在執(zhí)行時(shí)遇到錯(cuò)誤或者意外行為。使用異常處理語句就可以

精確捕獲這些異常,以提供更多的信息來解決問題或者給出提示。本節(jié)將要介紹c#中的異

常處理語句,主要包括兩種:try-catch-finally語句和throw語句。

3.4.1try-catch-finally語句及應(yīng)用

try-catch-finally語句常常被應(yīng)用在異常情況的處理中。在try的代碼塊中可能是一段會(huì)

發(fā)生異常情況的程序,而catch塊是處理發(fā)生的異常情況,最后在finally塊中釋放資源。無

論是否會(huì)發(fā)生異常情況,總會(huì)執(zhí)行finally中的代碼。

在程序執(zhí)行中,異常情況會(huì)時(shí)常發(fā)生的,使用try-catch-finally語句就可以很好的處理

異常情況。例如在讀取遠(yuǎn)程數(shù)據(jù)庫(kù)時(shí),可能會(huì)發(fā)生網(wǎng)絡(luò)斷開、數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤、數(shù)據(jù)庫(kù)服務(wù)器

負(fù)載過大等異常情況。那么連接數(shù)據(jù)庫(kù)的代碼就需要寫在try語句塊中,一旦在連接和操作

數(shù)據(jù)庫(kù)過程中發(fā)生異常,catch就會(huì)捕獲到相關(guān)信息。無論是否發(fā)生數(shù)據(jù)庫(kù)連接異常,都會(huì)

執(zhí)行finally塊中的斷開數(shù)據(jù)庫(kù)連接的代碼。

例:

inti=0;

strings=textBoxl.Text:

try

i=int.Parse(s);

MessageBox.Show("轉(zhuǎn)換后的結(jié)果:"+i);

)

catch(Exceptionex)

(

MessageBox.Show("類型轉(zhuǎn)換失敗”+ex.Message);

)

finally

(

textBoxl.Text="";

)

習(xí)題:

1.在二文本框中輸入二個(gè)整數(shù)進(jìn)行相除并顯示結(jié)果,試?yán)胻ry-catch-finally語句捕捉

除0錯(cuò)誤并顯示結(jié)果。

2.在窗體中編寫一對(duì)兩個(gè)數(shù)進(jìn)行加減乘除的計(jì)算器,要求對(duì)文本框中輸入數(shù)據(jù)進(jìn)行類

型轉(zhuǎn)換時(shí)作異常處理。

3.4.2throw語句及應(yīng)用

throw語句通常與try-calch-finally語句一起使用,用于發(fā)出出現(xiàn)異常情況的信號(hào),然后

通過catch捕獲。為了精確的獲取異常信息類型,可以通過繼承異常類Exception自定義異

常類。Exception類位于名稱空間System中,是所有異常的基類型。Exception類中的Message

是一個(gè)只讀的屬性,包含關(guān)于所發(fā)生異常的原因的描述(適合人類閱讀)。所以,在自定義

異常處理類時(shí),通常都是繼承自Exception類。

例:在二文本框中輸入二個(gè)Double類型數(shù)進(jìn)行相除并顯示結(jié)果,試?yán)胻hrow語句、

try-catch-finally語句捕捉除0錯(cuò)誤并顯示結(jié)果。

doublea,b,c;

a=Convert.ToDouble(textBoxl.Text);

b=Convert.ToDouble(textBox2.Text);

try

(

c=a/b;

if(c.ToStringO=="正無窮大〃)

thrownewException();

MessageBox.Show(c.ToStringO);

)

catch

(

MessageBox.Show(“除數(shù)不能為零〃);

}

3.5小結(jié)

本章詳細(xì)講解了各種程序控制流程語句,其中包括了條件語句、循環(huán)語句、跳轉(zhuǎn)語句和

異常語句。本章的重點(diǎn)是熟練使用這些語句,難點(diǎn)是如何在不同場(chǎng)合適當(dāng)?shù)氖褂貌煌恼Z句。

從下一章開始將會(huì)接觸到C#的核心內(nèi)容——面向?qū)ο?,同時(shí),面向?qū)ο笠彩荂#學(xué)習(xí)的難點(diǎn)

之一。

第4章類與對(duì)象

類是面向?qū)ο笏枷胫凶顬楹诵牡母拍钪?,同時(shí)也是c#中最強(qiáng)大的數(shù)據(jù)類型。而對(duì)象

則是類實(shí)例化的產(chǎn)物,把類的描述具體化。本章將引導(dǎo)讀者一步步走進(jìn)類,并逐步深入的理

解類的概念以及在c#中的應(yīng)用。

在本章中,將重點(diǎn)學(xué)習(xí)以下內(nèi)容:

深入理解類和對(duì)象的概念;

認(rèn)識(shí)類的成員;

創(chuàng)建方法及方法的參數(shù);

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

4.1理解類

4.1.1類的定義

現(xiàn)實(shí)世界中,每一事物都可看用一個(gè)對(duì)象。每一對(duì)象都有一些屬性,這些屬性用于描述

該對(duì)象的某些特征。有些對(duì)象本身還可進(jìn)行一些操作,每一操作實(shí)現(xiàn)了某一功能,我們把這

一操作稱為該對(duì)象的一個(gè)方法。對(duì)一個(gè)對(duì)象所具有的屬性、方法等內(nèi)容的抽象描述稱為一個(gè)

類?類不是一個(gè)具體的對(duì)象。從一個(gè)類可派生出具有相同屬性、方法等內(nèi)容的若干個(gè)對(duì)象。

4.1.2使用class關(guān)鍵字創(chuàng)建一個(gè)類

在了解面向?qū)ο蠓椒ㄖ械念惡蛯?duì)象的概念之后,接下來介紹一下,如何使用代碼具體實(shí)

現(xiàn)創(chuàng)建類和對(duì)象。

C#是一種完全的面向?qū)ο蟮恼Z言,所以在應(yīng)用時(shí),從面向?qū)ο蟮脑O(shè)計(jì)角度考慮問題,

才可以把C#這種語言完全的發(fā)揮出來。在C#中類可以使用關(guān)鍵字class來定義,代碼如下

所示。

publicclassCustomer

//添加字段、屬性、方法、事件等

類與結(jié)構(gòu)類似,但類的成員前需加范圍限定關(guān)鍵詞。此外,class關(guān)鍵字前面的public

省略時(shí)為internal,表示只能被本應(yīng)用程序調(diào)用。

習(xí)題:

1.將2.3.6節(jié)示例中的結(jié)構(gòu)改用類進(jìn)行定義。

2.構(gòu)造一圓類Circle,并利用該類求圓面積和二個(gè)同心圓所構(gòu)成的環(huán)形面積。

publiccl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論