版權(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)楫惓6K止程序的運(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全員c證考試題庫(kù)1000題及答案解析
- 安全員A證考試強(qiáng)化訓(xùn)練題型匯編附答案詳解(預(yù)熱題)
- 2022年梧州職業(yè)學(xué)院?jiǎn)握忻嬖嚹M試題及答案解析
- 安全員A證考試測(cè)試卷及完整答案詳解(奪冠)
- 安全員A證考試從業(yè)資格考試真題【b卷】附答案詳解
- 燃?xì)夤艿狼逑淳S護(hù)方案
- 安全員A證考試考試黑鉆押題及參考答案詳解(基礎(chǔ)題)
- 未來五年飼料企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略分析研究報(bào)告
- 未來五年母豬產(chǎn)床企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 安全員A證考試能力提升B卷題庫(kù)完整答案詳解
- 錫圓電子科技有限公司高端半導(dǎo)體封測(cè)項(xiàng)目環(huán)評(píng)資料環(huán)境影響
- T/CGAS 026.2-2023瓶裝液化石油氣管理規(guī)范第2部分:平臺(tái)建設(shè)
- GB/T 45356-2025無壓埋地排污、排水用聚丙烯(PP)管道系統(tǒng)
- 設(shè)備管理人員19年述職
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)附答案
- 《外科手術(shù)學(xué)基礎(chǔ)》課件
- 拖欠工程款上訪信范文
- 語文-安徽省皖南八校2025屆高三上學(xué)期12月第二次大聯(lián)考試題和答案
- 《傳播學(xué)概論(第四版)》全套教學(xué)課件
- (正式版)JB∕T 7052-2024 六氟化硫高壓電氣設(shè)備用橡膠密封件 技術(shù)規(guī)范
- 單位車輛委托處理協(xié)議書
評(píng)論
0/150
提交評(píng)論