




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學(xué)習(xí)目標理解變量和常量的概念,能根據(jù)實際定義合適類型的變量和常量了解數(shù)據(jù)類型的分類掌握成員方法的定義,以及能熟練調(diào)用成員方法掌握C#中運算符、表達式以及控制語句的使用第二章C#語言基礎(chǔ)22.1變量和常量
【學(xué)一學(xué)】
變量是C#程序中的基本存儲單元,每一個變量都由一個變量名來標識,每一個變量都有一個類型,這個類型決定何種類型的數(shù)據(jù)可以被存儲在這個變量中。變量包括變量名、變量類型、變量作用域和變量的生存期四個要素。變量名必須是合法的標識符,所謂合法就是為變量起名時要遵守以下規(guī)范:
1.變量名必須以字母開頭2.變量名只能由字母、數(shù)字和下劃線組成,而且不能包含空格、標點符號、運算符等其它符號。3.變量名不能與C#中的關(guān)鍵字相同。4.變量名不能與C#中的庫函數(shù)名稱相同。第二章C#語言基礎(chǔ)2.1.1變量32.1變量和常量
創(chuàng)建變量是通過聲明類型并標識它的名字來完成的,變量必須先聲明,然后才可以使用。聲明一個變量的語法如下:[屬性][修飾符]數(shù)據(jù)類型變量名;屬性和修飾符將在后續(xù)的章節(jié)中進行介紹,數(shù)據(jù)類型是指變量的類型,變量名是給變量取的名稱。下列代碼段列出了一些合法和非法的變量:
inti;//合法
intNo.1;//不合法,含有非法字符stringtotal;//合法charfor;//不合法,與關(guān)鍵字名稱相同char@for;//合法floatMain;//不合法,與函數(shù)名稱相同第二章C#語言基礎(chǔ)2.1.1變量42.1變量和常量
下表2.1列出了所有基本數(shù)據(jù)類型的默認值。第二章C#語言基礎(chǔ)值類型默認值數(shù)值類型(decimal/double/float/int/long/short/byte等)0或0.0boolfalsechar'\0'enum0表2-1基本數(shù)據(jù)類型的默認值2.1.1變量52.1變量和常量
【試一試】[任務(wù)2-1]:聲明三個整數(shù)類型(int)的變量a、b、c,在聲明變量的同時初始化變量a,然后按如下公式分別為變量b、c賦值。
b=5*a; c=a+b;最后依次輸出變量a、b、c的值。解決思路:1.在主方法Main中聲明三個整型變量,并為第一個變量a賦初值;2.按上述公式分別為變量b、c賦值;3.將三個變量依次在控制臺輸出。完成步驟:(1)創(chuàng)建一個名為“Chapter2_1”的控制臺應(yīng)用程序。(2)在默認生成的類文件Program.cs的方法Main中編寫如下代碼:第二章C#語言基礎(chǔ)2.1.1變量62.1變量和常量
staticvoidMain(string[]args){
inta=5,b,c;//聲明變量并初始化變量a為5b=5*a;//為變量b賦值
c=a+b;//為變量c賦值
Console.WriteLine("a={0},b={1},c={2}",a,b,c);//輸出變量的值
}(3)按組合鍵“Ctrl+F5”,執(zhí)行程序,運行的結(jié)果如圖2.1所示。
第二章C#語言基礎(chǔ)2.1.1變量圖2.1輸出三個變量的值
72.1變量和常量
將方法Main中的代碼稍作修改,使得變量b在使用前沒有進行初始化,修改后的代碼如下所示:staticvoidMain(string[]args){
inta=5,b,c;//聲明變量并初始化變量a為5//b=5*a;//為變量b賦值
c=a+b;//為變量c賦值
Console.WriteLine(“a={0},b={1},c={2}”,a,b,c);//輸出變量的值
}將代碼行b=5*a;注釋掉后,也就形成了變量b沒有進行初始化就使用的情況。執(zhí)行程序,就會產(chǎn)生如圖2.2所示的程序編譯錯誤。第二章C#語言基礎(chǔ)2.1.1變量82.1變量和常量
與變量不同,常量的值在程序運行過程中是不能改變的。其類型只可以是基本數(shù)據(jù)類型和字符串類型??梢哉J為常量是一種特殊的變量,是用來存儲常數(shù)的變量。要定義一個常量,其語法格式如下:[屬性][修飾符]const數(shù)據(jù)類型常量名=表達式;定義變量時,使用關(guān)鍵字const聲明一個常量,其表達式中的運算對象只能是常數(shù)和常數(shù)。另外,為了便于識別,常量名一般全部采用大寫。常量必須在聲明的時候被初始化,一經(jīng)初始化了,就不能改變。例如以下代碼列出了定義常量的非法與合法情況:
constlongPI;//錯誤。在該語句中必須為con賦值
constlongPI=3.1415926L;//正確。聲明了一個long類型的常量第二章C#語言基礎(chǔ)2.1.2常量92.2數(shù)據(jù)類型
【學(xué)一學(xué)】
值類型變量直接存放實際數(shù)據(jù),都有固定的長度,值類型變量的值都保存在堆棧上。值類型包括簡單值類型和復(fù)合型值類型。簡單值類型可以細分為整數(shù)類型、字符類型、實數(shù)類型和布爾類型,而復(fù)合型值類型包括結(jié)構(gòu)類型和枚舉類型。整數(shù)類型整數(shù)類型是值類型中的一種。表2.2列出了C#中的所有整數(shù)類型。第二章C#語言基礎(chǔ)2.2.1值類型C#類型.NET系統(tǒng)類型說明sbyteSystem.Sbyte8位有符號整數(shù)(-128~127)shortSystem.Int1616位有符號整數(shù)(-32768~32767)intSystem.Int3232位有符號整數(shù)(-2147483647~2147483646)longSystem.Int6464位有符號整數(shù)(-9223372036854775808~9223372036854775807)byteSystem.Byte8位無符號整數(shù)(0~255)ushortSystem.UInt1616位無符號整數(shù)(0~65635)uintSystem.UInt3232位無符號整數(shù)(0~4294967295)ulongSystem.UInt6464位無符號整數(shù)(0~18446744073709551615)102.2數(shù)據(jù)類型
實數(shù)類型實數(shù)類型有float、double和decimal三種類型,分別叫做單精度、雙精度和固定精度類型,表2-3列出了實數(shù)類型。第二章C#語言基礎(chǔ)2.2.1值類型C#類型.NET系統(tǒng)類型說明floatSystem.Single單精度浮點數(shù),值范圍為±1.5×10-45~±3.4×1038,7位有效數(shù)字doubleSystem.Double雙精度浮點數(shù),值范圍為±5.0×10-324~±1.7×10308,15~16位有效數(shù)字decimalSystem.Decimal保存±1.0×10-28~±7.9×10-28的值表2-3實數(shù)類型112.2數(shù)據(jù)類型
字符類型字符char類型表示Unicode字符,是無符號的16位整數(shù),可以容納65535個組成Unicode字符空間的數(shù)值。char值可以寫成如下的形式:'A'//一個簡單字符0x02D//十六進制數(shù)值'\u0041'//Unicode字符值'\n'//轉(zhuǎn)義字符(char)32//帶有數(shù)據(jù)類型強制轉(zhuǎn)換符的整數(shù)類型int轉(zhuǎn)義字符是以反斜杠\為首的兩個特殊字符標記,表示特定的含義,常見的轉(zhuǎn)義字符如表2-4所示。
第二章C#語言基礎(chǔ)2.2.1值類型表2-4常見的轉(zhuǎn)義字符字符含義值(Unicode)\'單引號0x0027\''雙引號0x0022\\反斜杠0x005C\0空字符0x0000\a警鈴0x0007\b退格0x0008\f換頁0x000C\n換行0x000A\r回車0x000D\t水平制表0x0009\v垂直制表0x000B122.2數(shù)據(jù)類型
布爾類型布爾bool類型是邏輯值,取值只能是true或者false,bool類型對應(yīng)于.NET類庫中的System.Boolean結(jié)構(gòu),它在計算機中占4個字節(jié),即32位存儲空間。在程序中,通過對布爾類型值的判斷來控制程序的執(zhí)行,具體的應(yīng)用將在第5節(jié)進行詳細的介紹。結(jié)構(gòu)類型在實際應(yīng)用中,一組相關(guān)的數(shù)據(jù)可能是相同類型的、也有可能是不同類型的。如一個學(xué)生的學(xué)號、姓名、性別和年齡等數(shù)據(jù),它們是相關(guān)的、且往往要作為一個整體來應(yīng)用,這時就需要一種類型來定義一系列相關(guān)的數(shù)據(jù),這種類型就是結(jié)構(gòu)。結(jié)構(gòu)類型使用關(guān)鍵字struct來定義,聲明結(jié)構(gòu)類型的語法格式如下:第二章C#語言基礎(chǔ)2.2.1值類型132.2數(shù)據(jù)類型
struct
結(jié)構(gòu)名稱{
結(jié)構(gòu)成員定義;}聲明結(jié)構(gòu)后,就可以聲明該結(jié)構(gòu)類型的結(jié)構(gòu)變量。聲明結(jié)構(gòu)變量的語法格式如下:結(jié)構(gòu)名變量名稱;要訪問結(jié)構(gòu)變量的某個成員,要采用以下格式來完成:變量名稱.成員名稱第二章C#語言基礎(chǔ)2.2.1值類型142.2數(shù)據(jù)類型
【試一試】[任務(wù)2-2]:定義一個學(xué)生結(jié)構(gòu)(包含學(xué)號、姓名、年齡、專業(yè))來存儲學(xué)生的基本信息,聲明一個該結(jié)構(gòu)類型的變量,并為該變量的各成員賦值,最后輸出該學(xué)生的基本信息。[解決思路:]1.在類中聲明一個學(xué)生結(jié)構(gòu)Student;2.在主方法Main中聲明一個Student類型的變量stud,并依次為該變量的各成員賦值;3.在控制臺將變量stud的各成員數(shù)據(jù)輸出。[完成步驟:]1.創(chuàng)建一個名為“Chapter2_2”的控制臺應(yīng)用程序,在該項目中的Program.cs文件中添加如下代碼。
structStudent{publicint
sno;//成員snopublicstringname;publicintage;publicstringspeciality;}第二章C#語言基礎(chǔ)2.2.1值類型152.2數(shù)據(jù)類型
上述代碼定義了一個名為Student的結(jié)構(gòu)類型,其中包含4個成員變量。2.在主方法Main中添加如下代碼。staticvoidMain(string[]args){Studentstud;//聲明Student類型的變量stud
stud.sno=12;//為變量stud的成員sno賦值
="章小強";
stud.age=18;
stud.speciality="軟件技術(shù)";
Console.WriteLine("該生學(xué)號:{0},姓名:{1},年齡:{2}歲,專業(yè):{3}。",
stud.sno,,stud.age,stud.speciality);//將變量stud的各成員的值輸出}3.按組合鍵“Ctrl+F5”來執(zhí)行程序,運行的結(jié)果如圖2.3所示。
第二章C#語言基礎(chǔ)2.2.1值類型圖2.3輸出學(xué)生的基本信息
162.2數(shù)據(jù)類型
枚舉類型現(xiàn)實生活中,經(jīng)常要用到一組相關(guān)的常數(shù),如1到12月、星期一到星期七等。這些常數(shù)的取值應(yīng)限定在一個合理的范圍內(nèi),且在實際編程過程中,這些常數(shù)最好能用直觀的中文或英文來表示,以增強程序的可讀性。在C#中,就用枚舉類型來解決此類問題。枚舉類型主要用于表示一個邏輯相關(guān)聯(lián)的項的組合,使用關(guān)鍵字enum來定義,語法格式如下:
enum
枚舉名{
枚舉成員1,枚舉成員2,…}[;]//該分號可有可無枚舉實際上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號。例如下列代碼定義一個代表星期的枚舉類型WeekDay,并聲明一個該類型的變量day。第二章C#語言基礎(chǔ)2.2.1值類型172.2數(shù)據(jù)類型
enum
WeekDay//定義了一個枚舉類型WeekDay{
Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}
WeekDayday;//聲明該類型的一個變量day不難看出,結(jié)構(gòu)跟枚舉之間的區(qū)別在于:(1)結(jié)構(gòu)是由不同類型的數(shù)據(jù)組成的一組新的數(shù)據(jù)類型,結(jié)構(gòu)類型的變量的值是由各個成員的值組合而成的。而枚舉則不同,枚舉類型的變量在某一時刻只能取枚舉中某一個元素的值。比如,day這個表示“星期”的枚舉類型的變量,它的值要么是Sunday,要么是Monday或其它的星期元素,但它在一個時刻只能代表具體的某一天。(2)結(jié)構(gòu)的每個成員的默認值是成員所在類型的默認值。而枚舉中的每個元素類型都是int型,且第一個元素默認的值為0,它后面的每一個連續(xù)元素的值按加1遞增。
第二章C#語言基礎(chǔ)2.2.1值類型182.2數(shù)據(jù)類型
在枚舉中,也可以給元素直接賦值,如將下列代碼段中的星期日的值設(shè)為1,則其后的元素的值分別為2、3、4、5、6、7。
enum
WeekDay{Sunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}另外,為枚舉類型的元素所賦的值的類型僅限于long、int、short和byte等整數(shù)類型。第二章C#語言基礎(chǔ)2.2.1值類型192.2數(shù)據(jù)類型
【學(xué)一學(xué)】引用類型是C#的另一種數(shù)據(jù)類型?!耙谩边@個詞在這里的含義是:該類型的變量不直接存儲包含的值,而是存儲值在內(nèi)存中的存儲位置。也就是說,引用類型的變量指向被引用的對象,它存儲的是實際值的“引用”(即地址或指針)。C#預(yù)定義了兩種引用類型:object類型和string類型。objectobject類型是所有值類型和引用類型的基類,幾乎所有的數(shù)據(jù)類型類都是直接或間接地從object類型繼承而來。一般來說,當有若干個引用類型的變量引用同一個對象時,無論通過哪一個引用變量改變其引用對象的屬性,其它引用變量引用的對象的屬性也會隨之改變。定義一個對象類型的變量的語法格式如下:object變量名;第二章C#語言基礎(chǔ)2.2.2引用類型202.2數(shù)據(jù)類型
Stringstring類型雖然也是引用類型,但它的工作方式更象值類型,如以下代碼所示。
strings1="hello";strings2=s1;上述代碼中,s2和s1都引用了同一個字符串類型,但是當s1的值發(fā)生改變時,例如:s1="goodbye";s2的值仍然是"hello"。由此可見,string類型對象是恒定的,也就是說,一旦一個string對象被創(chuàng)建,它的值就不能再修改,所以當改變一個字符串變量的值的時候,僅僅是新創(chuàng)建了一個包含修改內(nèi)容的新的string對象。string類型代表不可變的Unicode字符,是System.String類的別名。字符串在編程中的使用非常普遍,字符串的值是通過雙引號""把字符引起來生成的。除了object類型和string類型是引用類型之外,類、數(shù)組、接口和委托等類型也是引用類型。第二章C#語言基礎(chǔ)2.2.2引用類型212.2數(shù)據(jù)類型
類類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象集合。創(chuàng)建類的實例必須使用關(guān)鍵字new來進行聲明。類和結(jié)構(gòu)之間的根本區(qū)別在于:結(jié)構(gòu)是值類型,而類是引用類型。對于值類型,每個變量直接包含自身的所有數(shù)據(jù),每創(chuàng)建一個變量,就在內(nèi)存中開辟一塊區(qū)域;而對于引用類型,每個變量只存儲對目標存儲數(shù)據(jù)的引用,每創(chuàng)建一個變量,就增加一個指向目標數(shù)據(jù)的引用。關(guān)于類的詳細內(nèi)容,將在第3章進行詳細介紹。接口應(yīng)用程序之間要相互調(diào)用,就必須事先達成一個協(xié)議,被調(diào)用的一方在協(xié)議中對自己所能提供的服務(wù)進行描述。在C#中,這個協(xié)議就是接口。接口中對方法的聲明,既不包括訪問修飾符,也不包括方法的執(zhí)行代碼。接口定義的只是一組方法或者一個公共屬性,它必須通過類來實現(xiàn)。按照慣例,接口的名字以大寫字母“I”開頭。
第二章C#語言基礎(chǔ)2.2.2引用類型222.2數(shù)據(jù)類型
接口的定義如下列代碼所示。
interfaceIshape//通過關(guān)鍵字interface定義了一個接口IShape{ voidDraw();//在接口中定義了一個方法Draw的聲明
}在定義接口的代碼中,需要注意的是:聲明接口內(nèi)的方法時,不能有訪問修飾符,也不能有方法的具體實現(xiàn)。在第6章將對接口進行詳細的學(xué)習(xí)。委托委托是C#中的一種引用類型,是面向?qū)ο蟆㈩愋桶踩?。它主要用?NETFramework中的事件處理和回調(diào)函數(shù)。在使用委托的時候,可以像對待類一樣對待它,也就是要先聲明,再實例化。類在實例化之后叫對象或?qū)嵗?,而委托在實例化后仍然叫委托。在C#中,通過關(guān)鍵字delegate來聲明委托,聲明的語法格式如下。
第二章C#語言基礎(chǔ)2.2.2引用類型232.2數(shù)據(jù)類型
[修飾符]delegate數(shù)據(jù)類型委托名([參數(shù)列表]);如下列代碼聲明了一個委托MathsOp,這樣任何一個返回值為double、且只有一個double類型形參的方法都可以用委托MathsOp來進行調(diào)用。delegatedoubleMathsOp(doublex);//聲明了一個委托MathsOp關(guān)于委托更詳細的內(nèi)容將在第5章進行介紹。數(shù)組在進行批量處理數(shù)據(jù)的時候,經(jīng)常要用到數(shù)組。數(shù)組是一組類型相同的有序數(shù)據(jù)。數(shù)組按照數(shù)組名、數(shù)據(jù)元素的類型和維數(shù)來進行描述。C#中提供的System.Array類是所有數(shù)組類型的基類。聲明數(shù)組的語法格式如下所示:類型[]數(shù)組名;如下列代碼聲明一個整數(shù)數(shù)組arry
int[]arry;
第二章C#語言基礎(chǔ)2.2.2引用類型242.2數(shù)據(jù)類型
在定義數(shù)組的時候,可以預(yù)先指定數(shù)組元素的個數(shù),這時在“[]”中指定數(shù)組的元素個數(shù)。數(shù)組元素的個數(shù)可以通過數(shù)組名加“.”加“Length”來獲得。在使用數(shù)組的時候,可以在“[]”中加入下標來取得對應(yīng)的數(shù)組元素。C#中的數(shù)組元素的下標是從0開始的,也就是說,第一個元素對應(yīng)的下標為0,以后元素的下標依此遞增。在C#中數(shù)組可以是一維的、也可以是多維的。一維數(shù)組最為普遍,用得也最多。關(guān)于數(shù)組更加詳細的內(nèi)容將在第5章介紹。
第二章C#語言基礎(chǔ)2.2.2引用類型252.3類的成員方法
【學(xué)一學(xué)】
聲明成員方法的一般語法如下:[方法修飾符]返回的數(shù)據(jù)類型方法名([形式參數(shù)列表]){ ……//方法體}方法修飾符是可選項,下表2.5列出了聲明時可以用于類員的訪問修飾符,這些修飾符可以控制類成員的作用域。第二章C#語言基礎(chǔ)2.3.1成員方法的定義聲明定義public訪問不受限制,public成員可以被任何其他類訪問private訪問只限于包含該成員的類:只有包含該成員的類才可以訪問該成員internal訪問只限于所在的程序集,只有在同一程序集內(nèi)的類才能訪問該成員protected訪問限于包含該成員的類及該類的派生類Protectedinternal訪問限于包含該成員的類、派生類以及與其位于同一個程序集內(nèi)的類表2.5類成員的訪問修飾符262.3類的成員方法
訪問修飾符具有一些規(guī)則,譬如,類的訪問修飾符總是默認為internal,而類的成員的訪問修飾符則被默認為private。對于一個類成員只能使用一個訪問修飾符,protectedinternal盡管是兩個單詞,但它是一個訪問修飾符。返回的數(shù)據(jù)類型是數(shù)據(jù)類型名,用來指定方法返回值的數(shù)據(jù)類型。方法的返回類型可以是任何數(shù)據(jù)類型,例如int
或者string。如果方法沒有返回值,那么返回的數(shù)據(jù)類型必須用關(guān)鍵字void明示。方法名是用來標識和調(diào)用方法。方法名的命名規(guī)則和變量名一樣。在為方法命名時,要注意使成員方法名具有一定的描述性,也就是見名知意。形式參數(shù)列表用來描述方法接受的參數(shù)的類型和名稱。參數(shù)位于兩個圓括號之間。參數(shù)的聲明和變量一樣,即類型名后面跟著參數(shù)名。如果方法有多個參數(shù),那么這些參數(shù)之間必須以逗號隔開,需要注意的是這些參數(shù)稱之為形式參數(shù),簡稱形參。
第二章C#語言基礎(chǔ)2.3.1成員方法的定義272.3類的成員方法
方法體包含方法執(zhí)行的語句,所有的語句都位于一對大括號之間。下列代碼在類MyMath中定義了一個公共的方法Add,該方法返回兩個整數(shù)的和。classMyMath
{ publicint
Add(inta,intb){ returna+b;//返回a加b的值}}如果將類中的某個成員(成員變量和成員方法)聲明為static,即在定義成員變量或方法的語句的前面加關(guān)鍵字static,則該成員就稱為靜態(tài)成員。類中的成員要么是靜態(tài),要么是非靜態(tài)。靜態(tài)成員屬于類所有,而非靜態(tài)成員則屬于類的實例。第二章C#語言基礎(chǔ)2.3.1成員方法的定義282.3類的成員方法
第二章C#語言基礎(chǔ)2.3.2成員方法的調(diào)用當調(diào)用一個成員方法的時候,執(zhí)行流程就跳轉(zhuǎn)到該方法,于是該方法開始執(zhí)行。當執(zhí)行到return語句或者方法的終點時,執(zhí)行流程就返回到調(diào)用該方法的地方。類的成員方法的調(diào)用可以分為一般成員方法的調(diào)用和靜態(tài)成員方法的調(diào)用。一般成員方法的調(diào)用調(diào)用一般成員方法的時候,要先實例化類的一個實例,然后通過以下的格式進行調(diào)用:實例名.方法名(實參列表)例如,下列代碼是要調(diào)用上節(jié)中的方法Add。
MyMathmath=newMyMath();math.Add(20,30);需要注意的是實參列表要跟定義該方法時的形參列表完全一致,如果該方法具有返回值,則需要相同數(shù)據(jù)類型或者與返回類型兼容(所謂兼容是指兩種數(shù)據(jù)類型能自動相互轉(zhuǎn)換)的數(shù)據(jù)類型的變量來接收。
292.3類的成員方法
第二章C#語言基礎(chǔ)2.3.2成員方法的調(diào)用在形參和實參結(jié)合使用的時候,還要注意方法中的參數(shù)類型。在C#中,成員方法的參數(shù)類型有三種類型:值類型參數(shù)、引用型類型參數(shù)、輸出類型參數(shù)。本書將在第5章對這些內(nèi)容做詳細的闡述。靜態(tài)成員方法的調(diào)用調(diào)用靜態(tài)成員方法與調(diào)用一般成員方法是不一樣的,調(diào)用靜態(tài)成員方法需要通過類名來調(diào)用,而不是通過類的實例名來調(diào)用的。調(diào)用靜態(tài)成員方法的格式如下:類名.靜態(tài)成員方法名靜態(tài)成員方法不屬于某個特定對象的方法,靜態(tài)成員方法能訪問靜態(tài)成員變量,靜態(tài)成員方法不能直接訪問實例變量。靜態(tài)成員方法有以下特點:1)靜態(tài)成員方法是類中的一個成員方法,它屬于整個類,也就是說不用創(chuàng)建任何對象也可以直接調(diào)用它。2)類的非靜態(tài)成員屬于類的實例所有,每創(chuàng)建一個類的實例,都在內(nèi)存中為非靜態(tài)成員開辟了一塊區(qū)域。而類的靜態(tài)成員屬于類所有,為這個類的所有實例所共享。無論這個類創(chuàng)建了多少個實例,一個靜態(tài)成員在內(nèi)存中只占有一塊區(qū)域。302.3類的成員方法
第二章C#語言基礎(chǔ)2.3.2成員方法的調(diào)用【試一試】[任務(wù)2-3]:設(shè)計一個用來計算圓周長和面積的類。其中計算周長的方法用靜態(tài)方法,計算圓面積的方法用一般方法。[解決思路:]1.新建一個代表圓的類Circle;2.在類Circle中添加一般成員變量r1、靜態(tài)變量r2和常量PI;3.定義用于計算圓周長的靜態(tài)方法Circumference;4.定義用于計算圓面積的一般方法Area;5.在主方法Main中為變量r1、r2賦值,并調(diào)用方法Circumference、Area來計算圓的周長和面積,將計算結(jié)果在控制臺輸出。[完成步驟:]1.創(chuàng)建一個名為Chapter2_3的控制臺應(yīng)用程序,在該項目中添加一個類文件Circle.cs。2.在類Circle中添加兩個成員變量和一個常量PI,其中一個變量為靜態(tài)成員變量。
312.3類的成員方法
第二章C#語言基礎(chǔ)2.3.2成員方法的調(diào)用
publicdoubler1;staticpublicdoubler2;publicconstdoublePI=3.14159;3.在類Circle中添加一個用來計算圓周長的靜態(tài)成員方法Circumference,具體代碼如下:staticpublicdoubleCircumference(){return2*PI*r2;}4.在類Circle中添加一個用來計算圓面積的一般成員方法Area,具體代碼如下:publicdoubleArea(){returnPI*r1*r1;}322.3類的成員方法
第二章C#語言基礎(chǔ)2.3.2成員方法的調(diào)用5.在主方法Main中添加如下代碼,為圓的半徑賦值,并調(diào)用方法來計算圓的周長和面積。staticvoidMain(string[]args){Circlecircle=newCircle();//實例化一個類Circle的變量
circle.r1=10;//為對象circle的半徑賦值
Circle.r2=10;//為類Circle的半徑賦值
Console.WriteLine("半徑為{0}的圓的周長是{1},面積是{2}。",circle.r1,Circle.Circumference(),circle.Area());//調(diào)用方法計算周長和面積
}6.按組合健“Ctrl+F5”來執(zhí)行程序,運行結(jié)果如圖2.4所示。
332.4運算符及表達式【學(xué)一學(xué)】
算術(shù)運算符用于創(chuàng)建執(zhí)行數(shù)學(xué)操作的表達式。表2-6中列出了創(chuàng)建基本數(shù)學(xué)表達式的運算符,包括加、減、乘、除以及其他操作的運算符。第二章C#語言基礎(chǔ)2.4.1算術(shù)運算符及表達式運算符描述+加-減*乘/除%取余++自加--自減表2-6算術(shù)運算符342.4運算符及表達式加法運算符(+)加法操作符可以運用于整數(shù)類型、實數(shù)類型、枚舉類型、字符串類型和委托類型,如下列表達式都是合法的。8+8;"abc"+"cde";10+'b';減法運算符(-)減法操作符同樣可以運用于整數(shù)類型、實數(shù)類型、枚舉類型、字符串類型和委托類型。它的用法與加法運算符幾乎完全一樣。乘法運算符(*)乘法運算符用于執(zhí)行整數(shù)和實數(shù)的乘法運算。一般說來,所有的數(shù)值類型都可以參與乘法、除法運算,但在運算時需要考慮其運算結(jié)果是否超越了數(shù)據(jù)類型所能容納的最大值。
第二章C#語言基礎(chǔ)2.4.1算術(shù)運算符及表達式352.4運算符及表達式除法運算符(/)在除法運算過程中,默認的返回值的類型與精度最高的操作數(shù)類型相同。比如,5/2的結(jié)果為2,而5.0/2結(jié)果為2.5。如果兩個整數(shù)類型的變量相除的話,返回的結(jié)果是不大于相除之值的最大整數(shù)。求余運算符(%)“/”運算符用來求兩數(shù)的商,而“%”運算符則用來求兩數(shù)相除后的余數(shù)。C#中的求余運算既適用于整數(shù)類型,也同樣適用于浮點數(shù)類型和十進制類型。例如,5%3的結(jié)果為2,而5%1.5的結(jié)果則為0.5。自加/自減運算符(++/--)++/--運算符只使用一個操作數(shù),將該操作數(shù)的值自增1或者自減1。這兩個運算符既可以用前綴形式,也可以用后綴形式。這兩種形式區(qū)別非常細微,卻又非常重要。若使用前綴形式,將會先將操作數(shù)的值加1或減1,然后再計算表達式的結(jié)果,如下列代碼所示。第二章C#語言基礎(chǔ)2.4.1算術(shù)運算符及表達式362.4運算符及表達式
intn=41;
intanswer=++n;//計算后answer=42,n=42;而使用后綴形式的話,將會先計算表達式的結(jié)果,然后再將操作數(shù)的值進行增加或是減少,如下列代碼所示。
intn=41;
intanswer=n++;//計算后answer=41,n=42;算術(shù)運算符可能會使程序拋出異常,例如以0為除數(shù),就會拋出DivideByZeroException異常。若代碼運行時發(fā)生操作溢出,就可能拋出OverflowException異常。關(guān)于異常將在第12章進行學(xué)習(xí)。
第二章C#語言基礎(chǔ)2.4.1算術(shù)運算符及表達式372.4運算符及表達式【學(xué)一學(xué)】
關(guān)系運算實際上邏輯運算的一種,可以把它理解為一種“判斷”,判斷的結(jié)果要么是“true”,要么是“false”,也就是說關(guān)系表達式的返回值總是布爾值。C#定義關(guān)系操作符的優(yōu)先級低于算術(shù)操作符。表2-7列出6種C#關(guān)系運算符。第二章C#語言基礎(chǔ)2.4.2關(guān)系運算符及表達式運算符描述==相等!=不等>大于<小于>=大于或等于<=小于或等于表2-7關(guān)系運算符
382.4運算符及表達式
對于整數(shù)和實數(shù)類型,這六種比較操作符都可以適用。除此之外,is運算符也可以被認為是一種關(guān)系運算符。is運算符被用于動態(tài)地檢查運行時對象類型是否和給定的類型兼容,如運算表達式“eisT”的結(jié)果就是一個布爾值。其中,e是一個表達式,T是一種數(shù)據(jù)類型,表達式的返回值是一個布爾值。例如:Console.WriteLine(1isint);Console.WriteLine(1isfloat);Console.WriteLine(1.0isfloat);Console.WriteLine(1.0isdouble);輸出結(jié)果為:truefalsefalsetrue第二章C#語言基礎(chǔ)2.4.2關(guān)系運算符及表達式392.4運算符及表達式【學(xué)一學(xué)】
用邏輯運算符將關(guān)系表達式或布爾表達式連接起來就是邏輯表達式。邏輯表達式的值仍然是一個布爾值。表2-8列出了4種C#的邏輯運算符。第二章C#語言基礎(chǔ)2.4.3邏輯運算符及表達式運算符描述!邏輯非&&邏輯與||邏輯或^邏輯異或表2-8邏輯運算符402.4運算符及表達式表2-8中,邏輯與和邏輯或都是二元操作符,要求有兩個操作數(shù)。而邏輯非為一元操作符,只有一個操作數(shù)。如果表達式中同時存在著多個邏輯運算符,那么邏輯非的優(yōu)先級最高,邏輯與的優(yōu)先級高于邏輯或。有時候,不需要執(zhí)行所有的操作數(shù),就可以確定邏輯表達式的結(jié)果,例如:假設(shè)expr1是一個布爾值或關(guān)系表達式,expr2是一個邏輯表達式,那么對于下列表達式而言:expr1&&expr2只有expr1為true時,才需要繼續(xù)判斷expr2值。如果expr1為false,那么邏輯表達式的值已經(jīng)確定為false,不需要繼續(xù)求expr2值。對于下列表達式而言:expr1||expr2只有expr1為false時,才需要繼續(xù)判斷expr2值。如果expr1為true,那么邏輯表達式的值就已經(jīng)確定為true,不需要再求expr2值。
第二章C#語言基礎(chǔ)2.4.3邏輯運算符及表達式412.4運算符及表達式在熟練掌握邏輯操作符和關(guān)系操作符以后,就可以使用邏輯表達式來表示各種復(fù)雜的條件。例如,給出一個年份,要判斷它是否為閏年。閏年的條件是:年份是400的倍數(shù),或者是4的倍數(shù)但不是100的倍數(shù)。設(shè)年份為year,判斷是否閏年就可以用下列一個邏輯表達式來表示:(year%400)==0||((year%4)==0&&(year%100)!=0)如果該表達式為true,則該年份是閏年,否則是非閏年。第二章C#語言基礎(chǔ)2.4.3邏輯運算符及表達式422.4運算符及表達式【學(xué)一學(xué)】
賦值運算符(=)賦值就是給一個變量賦一個值,C#通過賦值運算符“=”來為變量賦值,C#中可以對變量進行連續(xù)賦值,這時賦值運算符是右結(jié)合性的,也就是說從右向左運算符被執(zhí)行。例如,形如a=b=c的表達式等價于a=(b=c)。三元運算符(?:)C#中有一個三元運算符“?:”,其具體的格式為:條件表達式?表達式1:表達式2;該操作符首先求出條件表達式的值,如果條件表達式的值為true,則以表達式1的值作為整個表達式的值,如果條件表達式的值為false,則以表達式2的值作為整個表達式的值。例如在主方法Main中編寫如下代碼:第二章C#語言基礎(chǔ)2.4.4賦值和三元運算符432.4運算符及表達式staticvoidMain(string[]args){
inta=10;
intb=20;
intmax=a>b?a:b;
intmin=a<b?a:b;
Console.WriteLine("大值是{0}",max);
Console.WriteLine("小值是{0}",min);}運行該程序,結(jié)果如圖2.6所示
第二章C#語言基礎(chǔ)2.4.4賦值和三元運算符圖2.6三元運算符示例的運行結(jié)果442.5控制語句【學(xué)一學(xué)】
當程序中需要進行兩個或兩個以上的選擇時,可以根據(jù)條件判斷來選擇將要執(zhí)行的一組語句,這就需要用到分支語句,C#提供的分支語句有if條件語句和switch條件語句。if條件語句條件語句根據(jù)布爾表達式的值來選擇要執(zhí)行的語句,這樣就能控制應(yīng)用程序的執(zhí)行方向。if條件語句主要有3中表達形式:if、if…else和if…elseif,它們的共同點是,當布爾表達式的值為true時,就會執(zhí)行if語句后的代碼塊。(1)if語句if語句的語法如下所示:if(布爾表達式){語句塊}第二章C#語言基礎(chǔ)2.5.1分支語句452.5控制語句例如,變量sales的值如果大于10000,那么變量bonus就增加0.05*sales,通過if語句來表達,代碼如下:if(sales>10000){bonus=bonus+0.05*sales;}(2)if…else語句if…else語句的語法如下所示:if(布爾表達式){語句塊1}else{語句塊2}第二章C#語言基礎(chǔ)2.5.1分支語句462.5控制語句例如,變量sales的值如果大于10000,那么變量bonus就增加0.05*sales,否則變量bonus的值為0,通過if…else語句來表達,代碼如下:if(sales>10000){bonus=bonus+0.05*sales;}else{bonus=0;}前面學(xué)習(xí)的三元運算符(?:)可以看成是if…else語句的縮略形式,所以可以用三元運算符(?:)把上述代碼改寫成以下形式:bonus=(sales>10000)?(bonus+0.05*sales):0;第二章C#語言基礎(chǔ)2.5.1分支語句472.5控制語句(3)if…elseif語句if…elseif語句的語法如下所示:if(布爾表達式1){語句塊1}elseif(布爾表達式2){語句塊2}…elseif(布爾表達式n){語句塊n}else{語句塊n+1}
第二章C#語言基礎(chǔ)2.5.1分支語句482.5控制語句例如,變量sales的值如果大于10000,那么變量bonus就增加0.05*sales,如果變量sales的值如果大于5000,那么變量bonus就增加0.01*sales,否則變量bonus的值為0,通過if…elseif語句來表達,代碼如下:if(sales>10000){bonus=bonus+0.05*sales;}elseif(sales>5000){ bonus=bonus+0.01*sales;}else{bonus=0;}需要注意的是,C#中if后面的表達式的值必須是布爾類型。
第二章C#語言基礎(chǔ)2.5.1分支語句492.5控制語句switch條件語句switch語句的語法如下所示:switch(表達式){case常量表達式1:{語句塊1} break; case常量表達式2:{語句塊2} break; … case常量表達式n:{語句塊n} break; Default:{語句塊n+1} break;}第二章C#語言基礎(chǔ)2.5.1分支語句502.5控制語句switch語句的形式以switch表達式開始,后跟一連串的case塊,每個case塊通過case來標記。當switch表達式的值與某個case標記后面的常量表達式相等時,程序就執(zhí)行該case標記后的語句塊。若沒有一個case常量表達式的值與switch表達式的值相等,但定義了default分支,則執(zhí)行default后的語句塊。每個case塊結(jié)束處必須使用break語句,否則就會產(chǎn)生編譯錯誤?!驹囈辉嚒縖任務(wù)2-4]:將從鍵盤輸入的百分制成績轉(zhuǎn)換成對應(yīng)的等級。成績等級評定的標準是:分數(shù)90分以上為優(yōu)秀,80~89為良好,70~79為中等,60~69為及格,60分以下為不及格。解決思路:1.將從鍵盤輸入的字符串轉(zhuǎn)換成一個整數(shù)n;2.把n/10作為switch的表達式;3.將switch表達式的值與case后面的常量表達式的值進行逐一比對,根據(jù)成績評定標準輸出對應(yīng)的成績等級;
第二章C#語言基礎(chǔ)2.5.1分支語512.5控制語句4.如果多個case后面的語句塊是一樣的,可以省略前面case分支的語句塊,即前面的case分支共用后面的case語句塊。完成步驟:1.創(chuàng)建一個名為“Chapter2_4”的控制臺應(yīng)用程序。2.在主方法Main中編寫如下代碼,將輸入的百分制成績轉(zhuǎn)換成對應(yīng)的等級。staticvoidMain(string[]args){
Console.Write("請輸入一個百分制成績:");
intn=int.Parse(Console.ReadLine());switch(n/10){case10:case9:
Console.WriteLine("優(yōu)秀");break;
第二章C#語言基礎(chǔ)2.5.1分支語522.5控制語句
case8:
Console.WriteLine("良好");break;case7:
Console.WriteLine("中等");break;case6:
Console.WriteLine("及格");break;default:
Console.WriteLine("不及格");break;}}執(zhí)行程序,按提示輸入成績,轉(zhuǎn)換后的結(jié)果如圖2.7所示。
第二章C#語言基礎(chǔ)2.5.1分支語532.5控制語句
需要注意的是,switch后面括號中的表達式的值只能是整型、字符串或枚舉類型的表達式。
第二章C#語言基礎(chǔ)2.5.1分支語圖2.7百分制成績轉(zhuǎn)換成對應(yīng)的等級
542.5控制語句【學(xué)一學(xué)】程序中除了使用分支語句改變流程外,有時還需要使用循環(huán)語句重復(fù)、多次執(zhí)行某些語句塊。循環(huán)語句就是實現(xiàn)一個程序模塊的重復(fù)執(zhí)行,它對于簡化程序,更好地組織算法有著很重要的意義。C#中提供了以下四種循環(huán)語句,分別適用于不同的情形。1)while語句2)do-while語句3)for語句4)foreach語句while語句while語句有條件地將語句塊執(zhí)行0遍或多遍。語句的格式為:while(布爾表達式){語句塊}while語句的執(zhí)行順序是:(1)計算布爾表達式的值;(2)當布爾表達式的值為true時,執(zhí)行語句塊一遍,程序轉(zhuǎn)至第(1)步;(3)當布爾表達式的值為false時,while循環(huán)結(jié)束。第二章C#語言基礎(chǔ)2.5.2循環(huán)語句552.5控制語句需要注意的是,while語句可以在語句塊中通過break關(guān)鍵字來終止并跳出循環(huán),并繼續(xù)執(zhí)行循環(huán)體后面的語句;也可以用continue語句來停止continue語句后的代碼的執(zhí)行,繼續(xù)回到(1)進行while循環(huán)。以下代碼通過while語句來計算一個整數(shù)x的階乘值y。longy=1;
intx;x=Int.Parse(Console.ReadLine());
while(true){ y*=x;x--;
if(x==0){break;}}第二章C#語言基礎(chǔ)2.5.2循環(huán)語句562.5控制語句do-while語句與while語句不同的是,do-while語句中的語句塊至少執(zhí)行一次或多次。語句的格式如下:do{語句塊}while(布爾表達式);do-while語句的執(zhí)行順序是:(1)執(zhí)行語句塊一遍;(2)計算while后布爾表達式的值,若為true則回到(1)繼續(xù)執(zhí)行,若為false則終止do循環(huán)。在do-while循環(huán)語句中同樣允許用break語句終止循環(huán)、用continue語句跳過循環(huán)體中剩余的語句而強行執(zhí)行下一次循環(huán)。第二章C#語言基礎(chǔ)2.5.2循環(huán)語572.5控制語句以下代碼通過do-while語句來計算一個整數(shù)x的階乘值y。longy=1;
intx;x=Int.Parse(Console.ReadLine());do{ y*=x;x--;}
while(x>0);第二章C#語言基礎(chǔ)2.5.2循環(huán)語582.5控制語句for語句
for循環(huán)語句用于將語句塊重復(fù)執(zhí)行已設(shè)置好的次數(shù),該循環(huán)語句是C#中使用頻率較高的循環(huán)語句。當需要將語句塊重復(fù)執(zhí)行固定次數(shù)時,使用for循環(huán)語句是比較方便的。for語句的格式為:for(初始化表達式;條件表達式;迭代表達式){語句塊}for語句的執(zhí)行順序是:(1)在for循環(huán)開始執(zhí)行時,執(zhí)行初始化表達式。此部分只執(zhí)行一次。(2)計算條件表達式的值,以確定是否繼續(xù)執(zhí)行for循環(huán);若該表達
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國金融控股公司行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 二零二五年度股權(quán)回購協(xié)議版:綠色建筑企業(yè)股權(quán)回購及環(huán)保技術(shù)應(yīng)用協(xié)議
- 社區(qū)科普活動的策劃與實施策略
- 2025年度臨時工勞動保障服務(wù)合同
- 2025年度公共事業(yè)年合同制工人養(yǎng)老保險專項合同
- 2024-2025年中國對沖基金行業(yè)市場調(diào)研分析及投資戰(zhàn)略規(guī)劃報告
- 2025年度房屋租賃合同電子簽名服務(wù)協(xié)議
- 熱風(fēng)系統(tǒng)設(shè)計及優(yōu)化醫(yī)療設(shè)備領(lǐng)域的創(chuàng)新
- 中國棉紡類紗線項目投資可行性研究報告
- 2025年度個體勞動者版權(quán)授權(quán)合同
- 唐詩中的中醫(yī)藥知識-PPT幻燈片
- 四川省瀘州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 《鄒忌諷齊王納諫》課件(共45張)
- 機械制圖教學(xué)課件(全套)
- 熱能與動力工程測試技術(shù)- 液位測量
- 化學(xué)纖維精品課件
- 中式面點師初級(五級)教學(xué)計劃、大綱
- QC成果構(gòu)造柱澆筑新技術(shù)的研發(fā)創(chuàng)新(附圖)
- 2020 ACLS-PC-SA課前自我測試試題及答案
- BIM技術(shù)應(yīng)用管理辦法
- 信息論與編碼第4章信息率失真函數(shù)
評論
0/150
提交評論