C#學(xué)習(xí)快速入門(mén)_第1頁(yè)
C#學(xué)習(xí)快速入門(mén)_第2頁(yè)
C#學(xué)習(xí)快速入門(mén)_第3頁(yè)
C#學(xué)習(xí)快速入門(mén)_第4頁(yè)
C#學(xué)習(xí)快速入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩87頁(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、C#.NET程序設(shè)計(jì)實(shí)用教程程序設(shè)計(jì)實(shí)用教程1第二章第二章C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 2學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)u掌握掌握C#的基本數(shù)據(jù)類(lèi)型的基本數(shù)據(jù)類(lèi)型u掌握掌握C#各種運(yùn)算符表達(dá)式的用法;各種運(yùn)算符表達(dá)式的用法;u理解理解C#控制臺(tái)程序的基本結(jié)構(gòu);控制臺(tái)程序的基本結(jié)構(gòu);u會(huì)使用會(huì)使用IF、WHILE、FOR等語(yǔ)句編寫(xiě)等語(yǔ)句編寫(xiě)程序;程序;u掌握數(shù)組的使用方法;掌握數(shù)組的使用方法;u了解異常處理方法。了解異常處理方法。3第二章第二章 C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)u2.1 C#基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型u2.2 常量、變量與表達(dá)式常量、變量與表達(dá)式u2.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu)u2.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)u

2、2.5 數(shù)組數(shù)組u2.6 異常處理異常處理4u2.1.1 值類(lèi)型值類(lèi)型u2.1.2 引用類(lèi)型引用類(lèi)型2.1 C#基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型52.1 C#基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型 值類(lèi)型 引用類(lèi)型 簡(jiǎn)單類(lèi)型 結(jié)構(gòu)類(lèi)型 枚舉類(lèi)型 整數(shù)類(lèi)型 字符類(lèi)型 布爾類(lèi)型 實(shí)數(shù)類(lèi)型 sbyte byte short ushort int uint long ulong floate double decimal 類(lèi) 委托 數(shù)組 接口 C#中數(shù)據(jù)類(lèi)型分類(lèi)圖中數(shù)據(jù)類(lèi)型分類(lèi)圖 62.1.1值類(lèi)型值類(lèi)型 值類(lèi)型的變量?jī)?nèi)含變量值本身,值類(lèi)型的變量?jī)?nèi)含變量值本身,C#的值類(lèi)型可以分為的值類(lèi)型可以分為簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)

3、型和枚舉類(lèi)型。下面介紹簡(jiǎn)單類(lèi)型。簡(jiǎn)單類(lèi)型、結(jié)構(gòu)類(lèi)型和枚舉類(lèi)型。下面介紹簡(jiǎn)單類(lèi)型。 71簡(jiǎn)單類(lèi)型(簡(jiǎn)單類(lèi)型(Simple Type)(1) 整數(shù)類(lèi)型整數(shù)類(lèi)型8(2) 實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型9(3 )字符類(lèi)型字符類(lèi)型 例如,可以采用如下方式字符變量賦值:例如,可以采用如下方式字符變量賦值: char c=H ; / 字符字符H char c=x0048; / 字符字符H,十六進(jìn)制轉(zhuǎn)義符(前綴為,十六進(jìn)制轉(zhuǎn)義符(前綴為x) char c=u0048; / 字符字符H,Unicode表示形式(前綴為表示形式(前綴為u) char c=r; / 回車(chē),轉(zhuǎn)義字符回車(chē),轉(zhuǎn)義字符 在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有

4、效字符數(shù)量必須且只能在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符數(shù)量必須且只能是一個(gè),而且不能是單引號(hào)或者反斜杠(是一個(gè),而且不能是單引號(hào)或者反斜杠()。)。10(4)布爾類(lèi)型布爾類(lèi)型 布爾類(lèi)型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類(lèi)型的布爾類(lèi)型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類(lèi)型的類(lèi)型標(biāo)識(shí)符是類(lèi)型標(biāo)識(shí)符是bool。 11uint age=23ulong number=-33uulong number1=55ufloat score=89.5fudecimal price=123.456muchar answer=yubool isright=true122枚舉類(lèi)型(枚舉類(lèi)型(Enum Type)枚舉類(lèi)

5、型是一種值類(lèi)型,它用于聲明一組命名的枚舉類(lèi)型是一種值類(lèi)型,它用于聲明一組命名的常數(shù)。常數(shù)。(1)枚舉類(lèi)型的聲明形式:)枚舉類(lèi)型的聲明形式:訪問(wèn)修辭符訪問(wèn)修辭符 enum 枚舉名:基礎(chǔ)類(lèi)型枚舉名:基礎(chǔ)類(lèi)型 枚舉成員枚舉成員 注:注:u 基礎(chǔ)類(lèi)型必須能夠表示該枚舉中定義的所有枚舉數(shù)值?;A(chǔ)類(lèi)型必須能夠表示該枚舉中定義的所有枚舉數(shù)值。u 枚舉聲明可以顯式地聲明枚舉聲明可以顯式地聲明 byte、sbyte、short、ushort、int、uint、long 或或 ulong 類(lèi)型作為對(duì)應(yīng)的基礎(chǔ)類(lèi)型。類(lèi)型作為對(duì)應(yīng)的基礎(chǔ)類(lèi)型。u 沒(méi)有顯式地聲明基礎(chǔ)類(lèi)型的枚舉聲明意味著所對(duì)應(yīng)的基礎(chǔ)類(lèi)型是沒(méi)有顯式地聲明基礎(chǔ)

6、類(lèi)型的枚舉聲明意味著所對(duì)應(yīng)的基礎(chǔ)類(lèi)型是int。13(2)枚舉成員枚舉成員 枚舉成員是該枚舉類(lèi)型的命名常數(shù)。任意兩個(gè)枚枚舉成員是該枚舉類(lèi)型的命名常數(shù)。任意兩個(gè)枚舉成員不能具有相同的名稱(chēng)。每個(gè)枚舉成員均具有相舉成員不能具有相同的名稱(chēng)。每個(gè)枚舉成員均具有相關(guān)聯(lián)的常數(shù)值。此值的類(lèi)型就是枚舉的基礎(chǔ)類(lèi)型。每關(guān)聯(lián)的常數(shù)值。此值的類(lèi)型就是枚舉的基礎(chǔ)類(lèi)型。每個(gè)枚舉成員的常數(shù)值必須在該枚舉的基礎(chǔ)類(lèi)型的范圍個(gè)枚舉成員的常數(shù)值必須在該枚舉的基礎(chǔ)類(lèi)型的范圍之內(nèi)。之內(nèi)。 示例示例: public enum TimeofDay:uint Morning=-3, Afternoon=-2, Evening=-1 產(chǎn)生編譯時(shí)錯(cuò)

7、誤,原因是常數(shù)值產(chǎn)生編譯時(shí)錯(cuò)誤,原因是常數(shù)值 -1、-2 和和 3 不在基礎(chǔ)整型不在基礎(chǔ)整型 uint 的范圍內(nèi)。的范圍內(nèi)。 14u(3)枚舉成員默認(rèn)值枚舉成員默認(rèn)值 在枚舉類(lèi)型中聲明的第一個(gè)枚舉成員它的默值為零。在枚舉類(lèi)型中聲明的第一個(gè)枚舉成員它的默值為零。 以后的枚舉成員值是將前一個(gè)枚舉成員(按照文本順以后的枚舉成員值是將前一個(gè)枚舉成員(按照文本順序)的值加序)的值加 1 得到的。這樣增加后的值必須在該基礎(chǔ)得到的。這樣增加后的值必須在該基礎(chǔ)類(lèi)型可表示的值的范圍內(nèi);否則,會(huì)出現(xiàn)編譯時(shí)錯(cuò)類(lèi)型可表示的值的范圍內(nèi);否則,會(huì)出現(xiàn)編譯時(shí)錯(cuò)誤。誤。 示例示例: public enum TimeofDay

8、:uint Morning, Afternoon, Evening Morning的值為的值為0,Afternoon的值為的值為1,Evening的值為的值為2。15(4)為枚舉成員顯示賦值為枚舉成員顯示賦值 允許多個(gè)枚舉成員有相同的值允許多個(gè)枚舉成員有相同的值 沒(méi)有顯示賦值的枚舉成員的值,總是前一個(gè)枚舉成員沒(méi)有顯示賦值的枚舉成員的值,總是前一個(gè)枚舉成員的值的值+1. 示例示例 public enum Number a=1, b, c=1, d b的值為的值為2,d的值為的值為2. 注意:以上枚舉值都不能超過(guò)它的基礎(chǔ)類(lèi)型范圍。否則會(huì)報(bào)錯(cuò)注意:以上枚舉值都不能超過(guò)它的基礎(chǔ)類(lèi)型范圍。否則會(huì)報(bào)錯(cuò).1

9、6(5)枚舉類(lèi)型與基礎(chǔ)類(lèi)型的轉(zhuǎn)換枚舉類(lèi)型與基礎(chǔ)類(lèi)型的轉(zhuǎn)換 基礎(chǔ)類(lèi)型不能隱式轉(zhuǎn)換為枚舉類(lèi)型基礎(chǔ)類(lèi)型不能隱式轉(zhuǎn)換為枚舉類(lèi)型 枚舉類(lèi)型也不能隱式轉(zhuǎn)換為基礎(chǔ)類(lèi)型枚舉類(lèi)型也不能隱式轉(zhuǎn)換為基礎(chǔ)類(lèi)型示例示例: public enum Number a, b, c, d class Test public static void Main() int i=Number.a; Number n; n=2 /錯(cuò)誤,要強(qiáng)制類(lèi)型轉(zhuǎn)換錯(cuò)誤,要強(qiáng)制類(lèi)型轉(zhuǎn)換(int)Number.a/錯(cuò)誤錯(cuò)誤,要強(qiáng)制類(lèi)型轉(zhuǎn)換要強(qiáng)制類(lèi)型轉(zhuǎn)換(Number)217u(6)System.Enum類(lèi)型類(lèi)型 System.Enum 類(lèi)型是所有枚舉類(lèi)

10、型的抽象基類(lèi)型是所有枚舉類(lèi)型的抽象基類(lèi)類(lèi),并且從并且從 System.Enum 繼承的成員在任何枚舉繼承的成員在任何枚舉類(lèi)型中都可用。類(lèi)型中都可用。 System.Enum 本身不是枚舉類(lèi)型。相反,它本身不是枚舉類(lèi)型。相反,它是一個(gè)類(lèi)類(lèi)型,所有枚舉類(lèi)型都是從它派生的。是一個(gè)類(lèi)類(lèi)型,所有枚舉類(lèi)型都是從它派生的。 System.Enum 從類(lèi)型從類(lèi)型System.ValueType派生派生18u(7)使用枚舉類(lèi)型示例:使用枚舉類(lèi)型示例: using System; public enum TimeofDay Morning, Afternoon, Evening 19class Test stat

11、ic void WriteGreeting(TimeofDay timeofDay) switch(timeofDay) case TimeofDay.Morning: Console.WriteLine(good morning); break; case TimeofDay.Afternoon: Console.WriteLine(good afternoon); break; case TimeofDay.Evening: Console.WriteLine(good evening); break; 20u static void Main() WriteGreeting(Timeof

12、Day.Morning); WriteGreeting(TimeofDay.Evening); WriteGreeting(TimeofDay.Afternoon); 213結(jié)構(gòu)類(lèi)型結(jié)構(gòu)類(lèi)型結(jié)構(gòu)類(lèi)型是指把各種不同類(lèi)型數(shù)據(jù)信息組合在結(jié)構(gòu)類(lèi)型是指把各種不同類(lèi)型數(shù)據(jù)信息組合在一起形成的組合類(lèi)型。一起形成的組合類(lèi)型。 聲明結(jié)構(gòu)類(lèi)型的一般語(yǔ)法格式如下:聲明結(jié)構(gòu)類(lèi)型的一般語(yǔ)法格式如下:struct 標(biāo)識(shí)符標(biāo)識(shí)符 結(jié)構(gòu)成員定義;結(jié)構(gòu)成員定義;22例:例:以下聲明一個(gè)具有姓名和年齡的結(jié)構(gòu)體類(lèi)型以下聲明一個(gè)具有姓名和年齡的結(jié)構(gòu)體類(lèi)型Student:struct Student /定義名為定義名為Student的

13、結(jié)構(gòu)類(lèi)型的結(jié)構(gòu)類(lèi)型/定義結(jié)構(gòu)的數(shù)據(jù)成員定義結(jié)構(gòu)的數(shù)據(jù)成員 long no; string name; int age; string university; /定義結(jié)構(gòu)的方法成員定義結(jié)構(gòu)的方法成員 void structmethod( ) /方法可執(zhí)行代碼方法可執(zhí)行代碼 3結(jié)構(gòu)類(lèi)型結(jié)構(gòu)類(lèi)型23 聲明一個(gè)結(jié)構(gòu)類(lèi)型后,可以定義該結(jié)構(gòu)類(lèi)型的變量(簡(jiǎn)聲明一個(gè)結(jié)構(gòu)類(lèi)型后,可以定義該結(jié)構(gòu)類(lèi)型的變量(簡(jiǎn)稱(chēng)為結(jié)構(gòu)變量)。稱(chēng)為結(jié)構(gòu)變量)。創(chuàng)建結(jié)構(gòu)類(lèi)型的變量的一般形式如下:創(chuàng)建結(jié)構(gòu)類(lèi)型的變量的一般形式如下: 結(jié)構(gòu)名結(jié)構(gòu)名 標(biāo)識(shí)符;標(biāo)識(shí)符;如:如:Student s1,s2;說(shuō)明:結(jié)構(gòu)名為已聲明的結(jié)構(gòu)類(lèi)型的名稱(chēng),標(biāo)

14、識(shí)符必須是說(shuō)明:結(jié)構(gòu)名為已聲明的結(jié)構(gòu)類(lèi)型的名稱(chēng),標(biāo)識(shí)符必須是C#合法的標(biāo)識(shí)符,它用來(lái)表示結(jié)構(gòu)類(lèi)型的變量。合法的標(biāo)識(shí)符,它用來(lái)表示結(jié)構(gòu)類(lèi)型的變量。 3結(jié)構(gòu)類(lèi)型結(jié)構(gòu)類(lèi)型24結(jié)構(gòu)變量的使用結(jié)構(gòu)變量的使用1)訪問(wèn)結(jié)構(gòu)變量字段)訪問(wèn)結(jié)構(gòu)變量字段訪問(wèn)結(jié)構(gòu)變量字段的一般格式如下:訪問(wèn)結(jié)構(gòu)變量字段的一般格式如下: 結(jié)構(gòu)變量名結(jié)構(gòu)變量名.字段名字段名 例如,例如,s1.no表示結(jié)構(gòu)變量表示結(jié)構(gòu)變量s1的學(xué)號(hào),的學(xué)號(hào),表示結(jié)構(gòu)變表示結(jié)構(gòu)變量量s2的姓名。的姓名。 結(jié)構(gòu)體變量的字段可以在程序中單獨(dú)使用,與普通變量完結(jié)構(gòu)體變量的字段可以在程序中單獨(dú)使用,與普通變量完全相同。全相同。2)結(jié)構(gòu)變量的賦值)結(jié)

15、構(gòu)變量的賦值 結(jié)構(gòu)變量的賦值有兩種方式。結(jié)構(gòu)變量的賦值有兩種方式。 結(jié)構(gòu)變量的字段賦值:使用方法與普通變量相同。結(jié)構(gòu)變量的字段賦值:使用方法與普通變量相同。 結(jié)構(gòu)變量之間賦值:要求賦值的兩個(gè)結(jié)構(gòu)變量必須類(lèi)型相結(jié)構(gòu)變量之間賦值:要求賦值的兩個(gè)結(jié)構(gòu)變量必須類(lèi)型相同。例如:同。例如: s1=s2;這樣這樣s2的所有字段值賦給的所有字段值賦給s1的對(duì)應(yīng)字段。的對(duì)應(yīng)字段。 25u 下面一個(gè)簡(jiǎn)單示例:下面一個(gè)簡(jiǎn)單示例:struct IPAddress public byte b1,b2,b3,b4; Class Test IPAddress myIP; myIP.b1=192; myIP.b2=168;

16、myIP.b3=1; myIP.b4=11; Console.Write(“0.1”,myIP.b1, myIP.b2); Console.Write(“0.1”,myIP.b3, myIP.b4);26【例例】 設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明結(jié)構(gòu)類(lèi)型的應(yīng)用。設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明結(jié)構(gòu)類(lèi)型的應(yīng)用。using System;namespace Proj3_2 class Program struct Student /結(jié)構(gòu)類(lèi)型聲明應(yīng)放在結(jié)構(gòu)類(lèi)型聲明應(yīng)放在Main函數(shù)的外面函數(shù)的外面 public int xh; /學(xué)號(hào)學(xué)號(hào) public string xm; /姓名姓名 public string xb

17、; /性別性別 public int nl; /年齡年齡 public string bh; /班號(hào)班號(hào) 27 static void Main(string args) Student s1,s2;/定義兩個(gè)結(jié)構(gòu)類(lèi)型變量定義兩個(gè)結(jié)構(gòu)類(lèi)型變量 s1.xh = 101; s1.xm = 李明李明; s1.xb = 男男; s1.nl = 20; s1.bh = 07001; Console.WriteLine(學(xué)號(hào)學(xué)號(hào):0,姓名姓名:1,性別性別:2,年齡年齡:3, 班號(hào)班號(hào):4, s1.xh, s1.xm, s1.xb, s1.nl, s1.bh); s2 = s1;/將結(jié)構(gòu)變量將結(jié)構(gòu)變量s1

18、賦給賦給s2 s2.xh = 108; s2.xm = 王華王華; Console.WriteLine(學(xué)號(hào)學(xué)號(hào):0,姓名姓名:1,性別性別:2,年齡年齡:3, 班號(hào)班號(hào):4, s2.xh, s2.xm, s2.xb, s2.nl, s2.bh); 282.1.2 引用類(lèi)型引用類(lèi)型u引用類(lèi)型是將數(shù)據(jù)保存在堆上的存儲(chǔ)方式。當(dāng)引用類(lèi)型是將數(shù)據(jù)保存在堆上的存儲(chǔ)方式。當(dāng)將一個(gè)數(shù)據(jù)給引用類(lèi)型時(shí),它被保存在堆上的將一個(gè)數(shù)據(jù)給引用類(lèi)型時(shí),它被保存在堆上的變量中。引用類(lèi)型的大小不固定,為了可以快變量中。引用類(lèi)型的大小不固定,為了可以快速地搜索引用類(lèi)型數(shù)據(jù)的值,通過(guò)將其地址保速地搜索引用類(lèi)型數(shù)據(jù)的值,通過(guò)將其地

19、址保存在堆棧上,可以通過(guò)地址找到真正數(shù)據(jù)的所存在堆棧上,可以通過(guò)地址找到真正數(shù)據(jù)的所在。引用類(lèi)型很抽象,就像一個(gè)門(mén)牌號(hào),可以在。引用類(lèi)型很抽象,就像一個(gè)門(mén)牌號(hào),可以根據(jù)門(mén)牌號(hào)找到所在的房子。根據(jù)門(mén)牌號(hào)找到所在的房子。u引用類(lèi)型一般包括類(lèi)、接口、委托和數(shù)組等。引用類(lèi)型一般包括類(lèi)、接口、委托和數(shù)組等。29引用類(lèi)型實(shí)例引用類(lèi)型實(shí)例class Study public int x = 15; /類(lèi)的變量,默認(rèn)為類(lèi)的變量,默認(rèn)為15class Program static void Main(string args) /引用類(lèi)型的演示引用類(lèi)型的演示 Study A1 = new Study(); Stu

20、dy A2 = A1; A2.x = 25; /值類(lèi)型的演示值類(lèi)型的演示 int B1 = 35; int B2 = B1; B2 = 45; Console.WriteLine(A1.x= + A1.x + ,A2.x= + A2.x); /引用類(lèi)型結(jié)果引用類(lèi)型結(jié)果 Console.WriteLine(B1= + B1 + ,B2= + B2); /值類(lèi)型結(jié)果值類(lèi)型結(jié)果 Console.Read(); 302.2 常量、變量與表達(dá)式常量、變量與表達(dá)式u2.2.1 常量常量u2.2.2 變量變量u2.2.3 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式u2.2.4 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性運(yùn)算符的優(yōu)先級(jí)與結(jié)合性

21、u2.2.5 類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換312.2.1 常量常量u常量就是在程序的運(yùn)行期間其值不會(huì)改變的量,常量就是在程序的運(yùn)行期間其值不會(huì)改變的量,通常分為直接常量和符號(hào)常量。通常分為直接常量和符號(hào)常量。u直接常量直接常量l(1)整型常量l(2)實(shí)型常量l(3)字符常量l(4)字符串常量l(5)布爾常量321直接常量直接常量(1)整型常量)整型常量C#語(yǔ)言整型常量的三種表示形式:語(yǔ)言整型常量的三種表示形式: l十進(jìn)制整數(shù),如十進(jìn)制整數(shù),如12, -314, 0。 l八進(jìn)制整數(shù),要求以八進(jìn)制整數(shù),要求以0開(kāi)頭,如開(kāi)頭,如012 l十六進(jìn)制數(shù),要求十六進(jìn)制數(shù),要求0 x或或0X開(kāi)頭,如開(kāi)頭,如0 x12

22、C#語(yǔ)言的整型常量默認(rèn)為語(yǔ)言的整型常量默認(rèn)為int型,如:型,如:int i =3;聲明聲明long型常量可以后加型常量可以后加 l 或或 L ,如:,如:long l = 3L;33(2)實(shí)型常量)實(shí)型常量C#浮點(diǎn)類(lèi)型常量有兩種表示形式:浮點(diǎn)類(lèi)型常量有兩種表示形式:l十進(jìn)制數(shù)形式:必須含有小數(shù)點(diǎn),例如:十進(jìn)制數(shù)形式:必須含有小數(shù)點(diǎn),例如: 3.14 314.0 .314 l科學(xué)記數(shù)法形式:如:科學(xué)記數(shù)法形式:如: 3.14e2 3.14E2 314E2 C#浮點(diǎn)型常量默認(rèn)為浮點(diǎn)型常量默認(rèn)為double型,如要聲明一個(gè)型,如要聲明一個(gè)常量為常量為float型,則需在數(shù)字后面加型,則需在數(shù)字后面

23、加f或或F,如:,如: double d = 3.14; float f = 3.14f;1直接常量直接常量34(3)字符常量)字符常量u字符常量是用單引號(hào)括起來(lái)的單個(gè)字符,如:字符常量是用單引號(hào)括起來(lái)的單個(gè)字符,如: char c = A;uC#字符采用字符采用Unicode編碼,每個(gè)字符占兩個(gè)編碼,每個(gè)字符占兩個(gè)字節(jié),因而可用十六進(jìn)制編碼形式表示字節(jié),因而可用十六進(jìn)制編碼形式表示char c1 = u0061;uC#語(yǔ)言中還允許使用轉(zhuǎn)義字符語(yǔ)言中還允許使用轉(zhuǎn)義字符來(lái)將其后的來(lái)將其后的字符轉(zhuǎn)變?yōu)槠渌暮x字符轉(zhuǎn)變?yōu)槠渌暮xchar c2 = n; /代表?yè)Q行符代表?yè)Q行符1直接常量直接常量3

24、51直接常量直接常量36(4)字符串常量)字符串常量 字符串常量是用雙引號(hào)括起的零個(gè)或多個(gè)字符序列。字符串常量是用雙引號(hào)括起的零個(gè)或多個(gè)字符序列。C#支持兩種形式的字符串常量,一種是常規(guī)字符串,另一種是支持兩種形式的字符串常量,一種是常規(guī)字符串,另一種是逐字字符串。逐字字符串。1)常規(guī)字符串。雙引號(hào)括起的一串字符,可以包括轉(zhuǎn)義字)常規(guī)字符串。雙引號(hào)括起的一串字符,可以包括轉(zhuǎn)義字符。例如符。例如: ”China,Beijingn” “d:myfilef1.txt” / 表示字符串表示字符串d:myfilef1.txt1直接常量直接常量372)逐字字符串。在常規(guī)的字符串前面加一個(gè))逐字字符串。在常

25、規(guī)的字符串前面加一個(gè),就形成,就形成了逐字字符串,它的意思是字符串中的每個(gè)字符均表示本了逐字字符串,它的意思是字符串中的每個(gè)字符均表示本意,不使用轉(zhuǎn)義字符。如果意,不使用轉(zhuǎn)義字符。如果在字符串中需用到雙引號(hào),則在字符串中需用到雙引號(hào),則可連寫(xiě)兩個(gè)雙引號(hào)來(lái)表示一個(gè)雙引號(hào)??蛇B寫(xiě)兩個(gè)雙引號(hào)來(lái)表示一個(gè)雙引號(hào)。例如:例如:C:windowsMicrosoft / 與與 C:windowsMicrosoft 含義相同含義相同 He saidHello to me / 與與He saidHello to me 含義相同含義相同38(5)布爾常量)布爾常量uboolean類(lèi)型適于邏輯運(yùn)算,一般用于程序流類(lèi)型

26、適于邏輯運(yùn)算,一般用于程序流程控制。程控制。uboolean類(lèi)型數(shù)據(jù)只允許取值類(lèi)型數(shù)據(jù)只允許取值true或或false,不可以不可以0或非或非0的整數(shù)替代的整數(shù)替代true和和false。 1直接常量直接常量392. 符號(hào)常量符號(hào)常量u符號(hào)常量通常用來(lái)保存一個(gè)固定值,例如,在符號(hào)常量通常用來(lái)保存一個(gè)固定值,例如,在程序設(shè)計(jì)中,圓周率程序設(shè)計(jì)中,圓周率“PI”是一個(gè)固定的值,那是一個(gè)固定的值,那么,在程序開(kāi)始時(shí),就可以將其定義為一個(gè)常么,在程序開(kāi)始時(shí),就可以將其定義為一個(gè)常量。量。u常量的定義語(yǔ)法如下所示,其中,常量的定義語(yǔ)法如下所示,其中,“const”是是定義常量的關(guān)鍵字,同時(shí)還要將定義常量

27、的關(guān)鍵字,同時(shí)還要將變量名大寫(xiě)變量名大寫(xiě)。const 類(lèi)型名稱(chēng)類(lèi)型名稱(chēng) 常量名常量名 = 常量表達(dá)式常量表達(dá)式;如:如:const double PI=3.1415926; 402.2.2 變量變量1變量命名規(guī)則變量命名規(guī)則u變量必須以字母(包括漢字)或者變量必須以字母(包括漢字)或者_(dá)(下劃線)開(kāi)頭,(下劃線)開(kāi)頭,后面跟字母、數(shù)字和下劃線的組合,后面跟字母、數(shù)字和下劃線的組合,不能包含空格、不能包含空格、小數(shù)點(diǎn)以及各種符號(hào)。小數(shù)點(diǎn)以及各種符號(hào)。u組成變量名的字符數(shù)不要太長(zhǎng),應(yīng)控制在組成變量名的字符數(shù)不要太長(zhǎng),應(yīng)控制在330個(gè)字個(gè)字符。符。u標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)。標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)。nam

28、e,Nameu標(biāo)識(shí)符不能與標(biāo)識(shí)符不能與C#關(guān)鍵字名相同。關(guān)鍵字名相同。如:如:int,object等等不能用作變量名。不能用作變量名。除非標(biāo)識(shí)符是以除非標(biāo)識(shí)符是以作為前綴的。作為前綴的。u標(biāo)識(shí)符不能與標(biāo)識(shí)符不能與C#中的類(lèi)庫(kù)名相同中的類(lèi)庫(kù)名相同u變量名在同一范圍內(nèi)必須是唯一的。變量名在同一范圍內(nèi)必須是唯一的。41合法的變量標(biāo)識(shí)符:合法的變量標(biāo)識(shí)符:_namec_sharpvar1var2var2var1非法的標(biāo)識(shí)符:非法的標(biāo)識(shí)符:1var c_# var2 var1 以數(shù)字以數(shù)字1開(kāi)頭開(kāi)頭 包括了字母、數(shù)字和下劃線以外的字符包括了字母、數(shù)字和下劃線以外的字符# 包括了字母、數(shù)字和下劃包括了字母

29、、數(shù)字和下劃線以外的字符(空格)線以外的字符(空格) 42u在在C#程序里使用某個(gè)變量之前,必須要告訴程序里使用某個(gè)變量之前,必須要告訴編譯器它是一個(gè)什么樣的變量,因此要對(duì)變量編譯器它是一個(gè)什么樣的變量,因此要對(duì)變量進(jìn)行定義。進(jìn)行定義。u在在C#中聲明變量使用下述語(yǔ)法:中聲明變量使用下述語(yǔ)法: 類(lèi)型類(lèi)型 標(biāo)識(shí)符標(biāo)識(shí)符;n例如:int a,b,c; 注意:注意:C#編譯器需要用某個(gè)初始值對(duì)變量進(jìn)行編譯器需要用某個(gè)初始值對(duì)變量進(jìn)行初始化,之后才能在操作中引用該變量初始化,之后才能在操作中引用該變量 。如果。如果檢測(cè)到局部變量在初始化之前就使用了它的值,檢測(cè)到局部變量在初始化之前就使用了它的值,就會(huì)

30、產(chǎn)生錯(cuò)誤。就會(huì)產(chǎn)生錯(cuò)誤。2.2.2 變量變量432.變量的初始化變量的初始化例如:例如: float f11.25, f23.6, f3;C#有兩種方法可確保變量在使用前進(jìn)行了初始化:有兩種方法可確保變量在使用前進(jìn)行了初始化:(1)變量是類(lèi)或結(jié)構(gòu)中的字段,如果沒(méi)有顯示初始化,)變量是類(lèi)或結(jié)構(gòu)中的字段,如果沒(méi)有顯示初始化,在默認(rèn)狀態(tài)下創(chuàng)建這些變量時(shí),其值是在默認(rèn)狀態(tài)下創(chuàng)建這些變量時(shí),其值是0.(2)方法的局部變量必須在代碼中顯示初始化之后才能)方法的局部變量必須在代碼中顯示初始化之后才能在語(yǔ)句中使用它們的值。在語(yǔ)句中使用它們的值。443.變量的作用域變量的作用域u只要字段所屬的類(lèi)在某個(gè)作用域內(nèi),

31、其字段也在該作只要字段所屬的類(lèi)在某個(gè)作用域內(nèi),其字段也在該作用域內(nèi)。用域內(nèi)。u局部變量存在于表示聲明該變量的塊語(yǔ)句或方法結(jié)束局部變量存在于表示聲明該變量的塊語(yǔ)句或方法結(jié)束的封閉花括號(hào)之前的作用域內(nèi)。的封閉花括號(hào)之前的作用域內(nèi)。u在在for,while或類(lèi)似語(yǔ)句中聲明的局部變量存在于該或類(lèi)似語(yǔ)句中聲明的局部變量存在于該循環(huán)體內(nèi)。循環(huán)體內(nèi)。(1)局部變量的作用域沖突。)局部變量的作用域沖突。同名的局部變量不能在同一作用域內(nèi)聲明兩次。同名的局部變量不能在同一作用域內(nèi)聲明兩次。int x=20;int x=30;45正確的局部變量作用域正確的局部變量作用域u class Programu u publ

32、ic static int Main()u u for (int i = 0; i = 0; i-)u u Console.Write(i);u u Console.ReadKey();u return 0;u u u 46錯(cuò)誤的變量作用域聲明錯(cuò)誤的變量作用域聲明upublic static int Main()u u int j = 20;u for (int i = 0; i 10; i+)u u int j = 30;u Console.Writeline(j+i);u u 47(2)字段和局部變量的作用域沖突)字段和局部變量的作用域沖突 把聲明為類(lèi)級(jí)的變量看做字段,把在方法中聲把聲明為

33、類(lèi)級(jí)的變量看做字段,把在方法中聲明的變量看做局部變量。明的變量看做局部變量。namespace test class VarTest static int j = 20; public static void Main() int j = 30; Console.Writeline(j); 48u運(yùn)算符運(yùn)算符1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符2 字符串運(yùn)算符字符串運(yùn)算符3 賦值運(yùn)算符賦值運(yùn)算符4 邏輯運(yùn)算符邏輯運(yùn)算符5 位運(yùn)算符位運(yùn)算符6 條件賦值運(yùn)算符條件賦值運(yùn)算符2.2.3 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式491 算術(shù)運(yùn)算符算術(shù)運(yùn)算符u算術(shù)運(yùn)算符算術(shù)運(yùn)算符: +,*,/,%,+,-l有關(guān)有關(guān) /: 15

34、/4 15/3 15/2 15.0/2l有關(guān)有關(guān) %:第一個(gè)數(shù)為:第一個(gè)數(shù)為0或或0.0 且第二個(gè)數(shù)不為零時(shí),則且第二個(gè)數(shù)不為零時(shí),則結(jié)果為結(jié)果為0或或0.0;若;若%的兩側(cè)有負(fù)數(shù),則運(yùn)算結(jié)果取決的兩側(cè)有負(fù)數(shù),則運(yùn)算結(jié)果取決于第一個(gè)數(shù);于第一個(gè)數(shù);l例如:例如:100%3 100%-3 -100%-3 -100%3l有關(guān)有關(guān)%的含義:的含義: 偶數(shù)偶數(shù) a %2, 整除整除 a%7(如:(如:1001000的自的自然數(shù)中能夠被然數(shù)中能夠被7整除的數(shù))整除的數(shù)), 個(gè)位個(gè)位 a%10l有關(guān)有關(guān)+, -: a=5; a+; b=a*2 a=5; b = + a *2; a=5; b = a+ *2

35、;502 字符串運(yùn)算符字符串運(yùn)算符l+ 除用于算術(shù)加法運(yùn)算外,還可用于除用于算術(shù)加法運(yùn)算外,還可用于對(duì)字符串進(jìn)行連接操作對(duì)字符串進(jìn)行連接操作int i = 300 +5;string s = hello, + world!;l+運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串字符串(String)類(lèi)型,系統(tǒng)會(huì)自動(dòng)將另類(lèi)型,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接string s = hello, +300 + 5 + 號(hào)號(hào);/輸出:輸出:hello, 3005號(hào)號(hào)513 賦值運(yùn)算符賦值運(yùn)算符u賦值運(yùn)算符就是常見(jiàn)的賦值運(yùn)算符就是

36、常見(jiàn)的“=”,它可以為數(shù)值型、,它可以為數(shù)值型、枚舉、類(lèi)等所有的類(lèi)型賦值。使用枚舉、類(lèi)等所有的類(lèi)型賦值。使用“=”的語(yǔ)法的語(yǔ)法如下所示:如下所示:u變量變量 = 值;值;u其中,其中,“=”左邊一般為變量的名稱(chēng),左邊一般為變量的名稱(chēng),“=”右邊右邊為固定的值、已經(jīng)知道的變量或新實(shí)例化的類(lèi)。為固定的值、已經(jīng)知道的變量或新實(shí)例化的類(lèi)。52一般二元運(yùn)算符都可以和賦值運(yùn)算符在一起構(gòu)成復(fù)合賦值運(yùn)算,如表所示。534關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符與關(guān)系表達(dá)式545邏輯運(yùn)算符邏輯運(yùn)算符u與:與:C#中的符號(hào)為中的符號(hào)為“&”,表示必須滿足兩個(gè)條,表示必須滿足兩個(gè)條件。語(yǔ)法為件。語(yǔ)法為“表達(dá)式表達(dá)式1 &

37、表達(dá)式表達(dá)式2”。u或:或:C#中的符號(hào)為中的符號(hào)為“|”,表示滿足兩個(gè)條件中,表示滿足兩個(gè)條件中的任意一個(gè)即可。語(yǔ)法為的任意一個(gè)即可。語(yǔ)法為“表達(dá)式表達(dá)式1 | 表達(dá)式表達(dá)式2”。u非:非:C#中的符號(hào)為中的符號(hào)為“!”。表示取當(dāng)前表達(dá)式結(jié)果。表示取當(dāng)前表達(dá)式結(jié)果的相反結(jié)果。如果當(dāng)前表達(dá)式為的相反結(jié)果。如果當(dāng)前表達(dá)式為“true”,則計(jì)算,則計(jì)算結(jié)果為結(jié)果為“false”。語(yǔ)法為。語(yǔ)法為“! 表達(dá)式表達(dá)式”。556位運(yùn)算符位運(yùn)算符u& 按位與:將兩個(gè)值的二進(jìn)制進(jìn)行與操作。只按位與:將兩個(gè)值的二進(jìn)制進(jìn)行與操作。只有兩個(gè)二進(jìn)位均為有兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為時(shí),結(jié)果位才為1,否則為,否則為0

38、u|按位或:將兩個(gè)值的二進(jìn)制進(jìn)行或操作。只按位或:將兩個(gè)值的二進(jìn)制進(jìn)行或操作。只要兩個(gè)二進(jìn)制位中有一個(gè)為要兩個(gè)二進(jìn)制位中有一個(gè)為1,結(jié)果位就等于,結(jié)果位就等于1,否則為否則為0u按位異或按位異或u取反取反u 右移:將變量的二進(jìn)制位往右移動(dòng)右移:將變量的二進(jìn)制位往右移動(dòng)56577條件賦值運(yùn)算符及表達(dá)式條件賦值運(yùn)算符及表達(dá)式u條件運(yùn)算符由符號(hào)條件運(yùn)算符由符號(hào)“?”與與“:”組成,通過(guò)操作三組成,通過(guò)操作三個(gè)操作數(shù)完成運(yùn)算,其一般格式為:個(gè)操作數(shù)完成運(yùn)算,其一般格式為:邏輯表達(dá)式邏輯表達(dá)式 ? 表達(dá)式表達(dá)式1:表達(dá)式:表達(dá)式2u在條件賦值表達(dá)式在運(yùn)算時(shí),首先運(yùn)算在條件賦值表達(dá)式在運(yùn)算時(shí),首先運(yùn)算“邏

39、輯邏輯表達(dá)式表達(dá)式”的值,如果為的值,如果為true,則運(yùn)算結(jié)果為,則運(yùn)算結(jié)果為“表達(dá)式表達(dá)式1”的值,否則運(yùn)算結(jié)果為的值,否則運(yùn)算結(jié)果為“表達(dá)式表達(dá)式2”的值。的值。如:條件表達(dá)式如:條件表達(dá)式43?1:2的值為的值為1; 條件表達(dá)式條件表達(dá)式34?1:2的值為的值為2。58上面運(yùn)算符的優(yōu)先級(jí)最高,下面的最低;同一行運(yùn)算上面運(yùn)算符的優(yōu)先級(jí)最高,下面的最低;同一行運(yùn)算符的優(yōu)先級(jí)相同,在實(shí)際表達(dá)式中這些運(yùn)算符的優(yōu)先級(jí)符的優(yōu)先級(jí)相同,在實(shí)際表達(dá)式中這些運(yùn)算符的優(yōu)先級(jí)由結(jié)合性原則來(lái)決定由結(jié)合性原則來(lái)決定2.2.4 運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)59運(yùn)算符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先計(jì)運(yùn)算

40、符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先計(jì)算。算。 C#根據(jù)運(yùn)算符的優(yōu)先級(jí)確定表達(dá)式的求值順序:優(yōu)先級(jí)根據(jù)運(yùn)算符的優(yōu)先級(jí)確定表達(dá)式的求值順序:優(yōu)先級(jí)高的運(yùn)算先做,優(yōu)先級(jí)低的操作后做,相同優(yōu)先級(jí)的操作高的運(yùn)算先做,優(yōu)先級(jí)低的操作后做,相同優(yōu)先級(jí)的操作從左到右依次做,同時(shí)用從左到右依次做,同時(shí)用小括號(hào)小括號(hào)控制運(yùn)算順序,任何在小控制運(yùn)算順序,任何在小括號(hào)內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。括號(hào)內(nèi)的運(yùn)算最優(yōu)先進(jìn)行。 60 數(shù)據(jù)類(lèi)型在一定條件下是可以相互轉(zhuǎn)換的,如將數(shù)據(jù)類(lèi)型在一定條件下是可以相互轉(zhuǎn)換的,如將int型數(shù)據(jù)型數(shù)據(jù)轉(zhuǎn)換成轉(zhuǎn)換成double型數(shù)據(jù)。型數(shù)據(jù)。C#允許使用兩種轉(zhuǎn)換的方式:隱式轉(zhuǎn)換允許使用兩種轉(zhuǎn)

41、換的方式:隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。和顯式轉(zhuǎn)換。1. 隱式轉(zhuǎn)換隱式轉(zhuǎn)換 隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。2.2.5 類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換61u隱式轉(zhuǎn)換通常運(yùn)用在以下三種情況:隱式轉(zhuǎn)換通常運(yùn)用在以下三種情況:u(1)對(duì)于同一種類(lèi)型,小范圍類(lèi)型到大范圍)對(duì)于同一種類(lèi)型,小范圍類(lèi)型到大范圍類(lèi)型的轉(zhuǎn)換類(lèi)型的轉(zhuǎn)換nsbyte sbn = 123; short shn = sbn; u(2)無(wú)符號(hào)整型到有符號(hào)整型的轉(zhuǎn)換)無(wú)符號(hào)整型到有符號(hào)整型的轉(zhuǎn)換nuint un = 123; long ln = un; u(3)整型(包括有符號(hào)整型和無(wú)符

42、號(hào)整型)整型(包括有符號(hào)整型和無(wú)符號(hào)整型)到浮點(diǎn)型的轉(zhuǎn)換到浮點(diǎn)型的轉(zhuǎn)換nint n = 123; float f = n; 622. 顯式轉(zhuǎn)換顯式轉(zhuǎn)換 顯式轉(zhuǎn)換又叫強(qiáng)制類(lèi)型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換顯式轉(zhuǎn)換又叫強(qiáng)制類(lèi)型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換需要用戶明確地指定轉(zhuǎn)換類(lèi)型,一般在不存在該類(lèi)型的隱式需要用戶明確地指定轉(zhuǎn)換類(lèi)型,一般在不存在該類(lèi)型的隱式轉(zhuǎn)換時(shí)才使用。格式如下:轉(zhuǎn)換時(shí)才使用。格式如下: (類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符)表達(dá)式表達(dá)式 其作用是將其作用是將“表達(dá)式表達(dá)式”值的類(lèi)型轉(zhuǎn)換為值的類(lèi)型轉(zhuǎn)換為“類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符”的的類(lèi)型。例如:類(lèi)型。例如: (int)1.23 /把把double

43、類(lèi)型的類(lèi)型的1.23轉(zhuǎn)換成轉(zhuǎn)換成int類(lèi)型,結(jié)果為類(lèi)型,結(jié)果為1 需要提醒注意以下幾點(diǎn):需要提醒注意以下幾點(diǎn): (1)顯式轉(zhuǎn)換可能會(huì)導(dǎo)致錯(cuò)誤。進(jìn)行這種轉(zhuǎn)換時(shí)編譯器將)顯式轉(zhuǎn)換可能會(huì)導(dǎo)致錯(cuò)誤。進(jìn)行這種轉(zhuǎn)換時(shí)編譯器將對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè)。如果有溢出說(shuō)明轉(zhuǎn)換失敗,就表明源對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè)。如果有溢出說(shuō)明轉(zhuǎn)換失敗,就表明源類(lèi)型不是一個(gè)合法的目標(biāo)類(lèi)型,轉(zhuǎn)換就無(wú)法進(jìn)行。類(lèi)型不是一個(gè)合法的目標(biāo)類(lèi)型,轉(zhuǎn)換就無(wú)法進(jìn)行。 (2)對(duì)于從)對(duì)于從float、double、decimal到整型數(shù)據(jù)的轉(zhuǎn)換,將到整型數(shù)據(jù)的轉(zhuǎn)換,將通過(guò)舍入得到最接近的整型值,如果這個(gè)整型值超出目標(biāo)類(lèi)通過(guò)舍入得到最接近的整型值,如果這個(gè)整型值

44、超出目標(biāo)類(lèi)型的范圍,則出現(xiàn)轉(zhuǎn)換異常。型的范圍,則出現(xiàn)轉(zhuǎn)換異常。 63【例例】 設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明類(lèi)型轉(zhuǎn)換的應(yīng)用。設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明類(lèi)型轉(zhuǎn)換的應(yīng)用。using System;namespace Proj3_1 class Program static void Main(string args) int i=65,i1,i2; double d = 66.3456,d1,d2; char c = A,c1,c2; Console.WriteLine(i=0:d5,d=1:f,c=2, i, d, c); i1 = (int)d; /強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換 d1 = i;/隱式類(lèi)型轉(zhuǎn)換隱

45、式類(lèi)型轉(zhuǎn)換 c1 = (char)i; /強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換 Console.WriteLine(i1=0:d5,d1=1:f,c1=2, i1, d1, c1); i2 = c; /隱式類(lèi)型轉(zhuǎn)換隱式類(lèi)型轉(zhuǎn)換 d2 = (int)d; /強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換成整數(shù)后再隱式轉(zhuǎn)為轉(zhuǎn)換成整數(shù)后再隱式轉(zhuǎn)為double類(lèi)型類(lèi)型 c2 = (char)d; /強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換 Console.WriteLine(i2=0:d5,d2=1:f,c2=2, i2, d2, c2); 64u 格式項(xiàng)都采用如下形式:u index,alignment:formatString u u 其中

46、index指索引占位符,這個(gè)肯定都知道;u ,alignment按字面意思顯然是對(duì)齊方式,以,為標(biāo)記;u :formatString就是對(duì)輸出格式的限定,以:為標(biāo)記。u u alignment:可選,是一個(gè)帶符號(hào)的整數(shù),指示首選的格式化字段寬度。如果“對(duì)齊”值小于格式化字符串的長(zhǎng)度,“對(duì)齊”會(huì)被忽略,并且使用格式化字符串的長(zhǎng)度作為字段寬度。如果“對(duì)齊”為正數(shù),字段的格式化數(shù)據(jù)為右對(duì)齊;如果“對(duì)齊”為負(fù)數(shù),字段的格式化數(shù)據(jù)為左對(duì)齊。如果需要填充,則使用空白。如果指定“對(duì)齊”,就需要使用逗號(hào)。u u formatString:由標(biāo)準(zhǔn)或自定義格式說(shuō)明符組成.u 65類(lèi)型轉(zhuǎn)換(續(xù))類(lèi)型轉(zhuǎn)換(續(xù))數(shù)值類(lèi)

47、型數(shù)據(jù)和字符串類(lèi)型數(shù)據(jù)之間的轉(zhuǎn)換數(shù)值類(lèi)型數(shù)據(jù)和字符串類(lèi)型數(shù)據(jù)之間的轉(zhuǎn)換l字符串類(lèi)型數(shù)據(jù)字符串類(lèi)型數(shù)據(jù)數(shù)值類(lèi)型數(shù)據(jù)數(shù)值類(lèi)型數(shù)據(jù) int n; float x;n = int.Parse(123); /字符串字符串123轉(zhuǎn)化為整數(shù)轉(zhuǎn)化為整數(shù)123x = float.Parse(“5.345678”); /字符串字符串“5.345678”轉(zhuǎn)化為單轉(zhuǎn)化為單 精度浮點(diǎn)數(shù)精度浮點(diǎn)數(shù)5.345678n = Convert.ToInt16(“123”); /字符串字符串“123”轉(zhuǎn)化為整數(shù)轉(zhuǎn)化為整數(shù) 123l數(shù)值類(lèi)型數(shù)據(jù)數(shù)值類(lèi)型數(shù)據(jù)字符串類(lèi)型數(shù)據(jù)字符串類(lèi)型數(shù)據(jù) int n=123; string s1;s1

48、= n.ToString(); /將整數(shù)將整數(shù)123轉(zhuǎn)化為字符串轉(zhuǎn)化為字符串12366裝箱和拆箱裝箱和拆箱 1. 裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換是指將一個(gè)值類(lèi)型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)引用裝箱轉(zhuǎn)換是指將一個(gè)值類(lèi)型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)引用類(lèi)型的數(shù)據(jù)。例如,下面語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換:類(lèi)型的數(shù)據(jù)。例如,下面語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換:int i=8;object obj=i;或或object obj=(object)i;2. 拆箱轉(zhuǎn)換拆箱轉(zhuǎn)換拆箱轉(zhuǎn)換是指將一個(gè)引用類(lèi)型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個(gè)拆箱轉(zhuǎn)換是指將一個(gè)引用類(lèi)型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個(gè)值類(lèi)型數(shù)據(jù)。例如,下面語(yǔ)句就執(zhí)行了拆箱轉(zhuǎn)換:值類(lèi)型數(shù)據(jù)。例如,下面語(yǔ)句就執(zhí)行

49、了拆箱轉(zhuǎn)換:object obj=2;int i=(int)obj;拆箱轉(zhuǎn)換需要(而且必須)執(zhí)行顯式轉(zhuǎn)換,這是它與裝箱拆箱轉(zhuǎn)換需要(而且必須)執(zhí)行顯式轉(zhuǎn)換,這是它與裝箱轉(zhuǎn)換的不同之處。轉(zhuǎn)換的不同之處。67u注意:注意:當(dāng)一個(gè)當(dāng)一個(gè)“裝箱裝箱”操作把值類(lèi)型轉(zhuǎn)換為一個(gè)操作把值類(lèi)型轉(zhuǎn)換為一個(gè)引用類(lèi)型時(shí),不需要顯式地強(qiáng)制類(lèi)型轉(zhuǎn)換;引用類(lèi)型時(shí),不需要顯式地強(qiáng)制類(lèi)型轉(zhuǎn)換;u而拆箱操作把引用類(lèi)型轉(zhuǎn)換到值類(lèi)型時(shí),由于而拆箱操作把引用類(lèi)型轉(zhuǎn)換到值類(lèi)型時(shí),由于它可以強(qiáng)制轉(zhuǎn)換到任何可以相容的值類(lèi)型,所它可以強(qiáng)制轉(zhuǎn)換到任何可以相容的值類(lèi)型,所以必須顯式地強(qiáng)制類(lèi)型轉(zhuǎn)換。以必須顯式地強(qiáng)制類(lèi)型轉(zhuǎn)換。683. C#用戶自定義

50、類(lèi)型轉(zhuǎn)換用戶自定義類(lèi)型轉(zhuǎn)換u public static implicit operator string(someStringClass s)u u .u uu 用戶自定義轉(zhuǎn)換用戶自定義轉(zhuǎn)換 所有的用戶自定義轉(zhuǎn)換都是靜態(tài)的,要使用所有的用戶自定義轉(zhuǎn)換都是靜態(tài)的,要使用static關(guān)鍵字關(guān)鍵字 用戶自定義轉(zhuǎn)換分顯示和隱示,它們用用戶自定義轉(zhuǎn)換分顯示和隱示,它們用implicit(隱式轉(zhuǎn)換)(隱式轉(zhuǎn)換)或或 explicit(顯示轉(zhuǎn)換)關(guān)鍵字聲明。(顯示轉(zhuǎn)換)關(guān)鍵字聲明。 static 訪問(wèn)修辭符訪問(wèn)修辭符 轉(zhuǎn)換修辭符轉(zhuǎn)換修辭符 operator 轉(zhuǎn)換類(lèi)型轉(zhuǎn)換類(lèi)型(參數(shù)參數(shù))69u示例示例:us

51、ing System;struct Number private int value; public Number(int value) this.value = value; /用戶自定義整型到用戶自定義整型到Number型的隱式轉(zhuǎn)換型的隱式轉(zhuǎn)換 static public implicit operator Number(int value) return new Number(value); / 用戶自定義從用戶自定義從Number型到整型的顯示轉(zhuǎn)換型到整型的顯示轉(zhuǎn)換 static public explicit operator int(Number n) return n.value

52、; /用戶自定義從用戶自定義從Number類(lèi)型到類(lèi)型到string類(lèi)型的隱式轉(zhuǎn)換類(lèi)型的隱式轉(zhuǎn)換 static public implicit operator string(Number n) return n.ToString(); uclass Test static public void Main() Number n; n= 10; Console.WriteLine(int)n); /隱式轉(zhuǎn)換到隱式轉(zhuǎn)換到string Console.WriteLine(n); 702.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu)u 2.3.1 if語(yǔ)句語(yǔ)句l1 、單分支、單分支if語(yǔ)句語(yǔ)句l2、雙分支、雙分支ifelse

53、語(yǔ)句語(yǔ)句l3、多分支、多分支if語(yǔ)句語(yǔ)句u 2.3.2 switch語(yǔ)句語(yǔ)句712.3.1 if語(yǔ)句語(yǔ)句1、單分支、單分支if語(yǔ)句語(yǔ)句語(yǔ)法形式如下:語(yǔ)法形式如下:if (表達(dá)式表達(dá)式) 語(yǔ)句;語(yǔ)句;說(shuō)明:如果表達(dá)式的值為說(shuō)明:如果表達(dá)式的值為true(即條件成立即條件成立),則,則執(zhí)行后面執(zhí)行后面if語(yǔ)句所控制的語(yǔ)句塊;否則什么都語(yǔ)句所控制的語(yǔ)句塊;否則什么都不執(zhí)行。不執(zhí)行。72u2、雙分支、雙分支ifelse語(yǔ)句語(yǔ)句語(yǔ)法如下:語(yǔ)法如下:if (表達(dá)式表達(dá)式) 語(yǔ)句塊語(yǔ)句塊1; else 語(yǔ)句塊語(yǔ)句塊2; 說(shuō)明:如果表達(dá)式的值為說(shuō)明:如果表達(dá)式的值為true(即條件成立即條件成立),則執(zhí)行后,

54、則執(zhí)行后面面if語(yǔ)句所控制的語(yǔ)句塊語(yǔ)句所控制的語(yǔ)句塊1;如果表達(dá)式的值為;如果表達(dá)式的值為false(即條件不成立即條件不成立),則執(zhí)行,則執(zhí)行else語(yǔ)句所控制的語(yǔ)語(yǔ)句所控制的語(yǔ)句塊句塊2;然后再執(zhí)行下一條語(yǔ)句。;然后再執(zhí)行下一條語(yǔ)句。2.3.1 if語(yǔ)句語(yǔ)句733、多分支、多分支if語(yǔ)句語(yǔ)句在在ifelse語(yǔ)句中可以嵌套使用多層語(yǔ)句中可以嵌套使用多層ifelse語(yǔ)句,如:語(yǔ)句,如:if (表達(dá)式表達(dá)式1) if(表達(dá)式表達(dá)式2) if(表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句1; else 語(yǔ)句語(yǔ)句2; else 語(yǔ)句語(yǔ)句3; else 語(yǔ)句語(yǔ)句4;2.3.1 if語(yǔ)句語(yǔ)句74例:首先輸入一個(gè)成績(jī),然后

55、判斷該成績(jī)是優(yōu)、良、中、及格還是不及格。例:首先輸入一個(gè)成績(jī),然后判斷該成績(jī)是優(yōu)、良、中、及格還是不及格。class Test static void Main( ) Console.Write(請(qǐng)輸入考試成績(jī)請(qǐng)輸入考試成績(jī): );double score=double.Parse(Console.ReadLine( ); if (score = 90) Console.WriteLine(成績(jī)?yōu)閮?yōu)成績(jī)?yōu)閮?yōu)); else if (score = 80) Console.WriteLine(成績(jī)?yōu)榱汲煽?jī)?yōu)榱?; else if (score = 70) Console.WriteLine(成績(jī)?yōu)?/p>

56、中成績(jī)?yōu)橹?; else if (score = 60) Console.WriteLine(成績(jī)?yōu)榧案癯煽?jī)?yōu)榧案?; else Console.WriteLine(成績(jī)?yōu)椴患案癯煽?jī)?yōu)椴患案?; 2.3.1 if語(yǔ)句語(yǔ)句752.3.2 switch語(yǔ)句語(yǔ)句u switch語(yǔ)句的一般格式如下:語(yǔ)句的一般格式如下:switch (表達(dá)式表達(dá)式) case 常量表達(dá)式常量表達(dá)式1: 語(yǔ)句語(yǔ)句1; break; case 常量表達(dá)式常量表達(dá)式2: 語(yǔ)句語(yǔ)句2; break; case 常量表達(dá)式常量表達(dá)式n: 語(yǔ)句語(yǔ)句n; break; default: 語(yǔ)句語(yǔ)句n+1; break;76u說(shuō)明:說(shuō)明

57、:switch語(yǔ)句也是一個(gè)多條件判斷語(yǔ)句,當(dāng)代碼語(yǔ)句也是一個(gè)多條件判斷語(yǔ)句,當(dāng)代碼執(zhí)行到此語(yǔ)句時(shí),根據(jù)執(zhí)行到此語(yǔ)句時(shí),根據(jù)“case”語(yǔ)句的條件,語(yǔ)句的條件,逐個(gè)判斷變量的值,滿足條件的,則進(jìn)入相對(duì)逐個(gè)判斷變量的值,滿足條件的,則進(jìn)入相對(duì)應(yīng)的應(yīng)的“case”代碼段,如果不滿足任何代碼段,如果不滿足任何“case”條件,則進(jìn)入條件,則進(jìn)入“default”語(yǔ)句,執(zhí)行默認(rèn)代碼語(yǔ)句,執(zhí)行默認(rèn)代碼段。段。switch語(yǔ)句的語(yǔ)法如下所示,其中,每語(yǔ)句的語(yǔ)法如下所示,其中,每個(gè)個(gè)“case”代碼段內(nèi)都必須帶有一個(gè)代碼段內(nèi)都必須帶有一個(gè)“break;”語(yǔ)句,用來(lái)從當(dāng)前分支條件中跳出。語(yǔ)句,用來(lái)從當(dāng)前分支條件

58、中跳出。2.3.2 switch語(yǔ)句語(yǔ)句772.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)u2.4.1 while語(yǔ)句語(yǔ)句u2.4.2 do-while語(yǔ)句語(yǔ)句u2.4.3 for語(yǔ)句語(yǔ)句u2.4.4 foreach語(yǔ)句語(yǔ)句u2.4.5 跳轉(zhuǎn)語(yǔ)句跳轉(zhuǎn)語(yǔ)句782.4.1 while語(yǔ)句語(yǔ)句uwhile語(yǔ)句的語(yǔ)法如下:語(yǔ)句的語(yǔ)法如下: while (條件條件) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; 792.4.1 while語(yǔ)句語(yǔ)句u下面的實(shí)例用下面的實(shí)例用whlie語(yǔ)句實(shí)現(xiàn)輸出語(yǔ)句實(shí)現(xiàn)輸出0到到99。class WhileClass static void Main() int i = 0; while (i 100) Cons

59、ole.WriteLine(i); i+; Console.Read(); 802.4.2 do-while語(yǔ)句語(yǔ)句u一般形式:一般形式: do 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; while (表達(dá)式表達(dá)式); 81u注意注意while語(yǔ)句與語(yǔ)句與do-while語(yǔ)句的區(qū)別:語(yǔ)句的區(qū)別:uwhile語(yǔ)句是語(yǔ)句是“先判斷再執(zhí)行先判斷再執(zhí)行”,do-while語(yǔ)語(yǔ)句是句是“先執(zhí)行后判斷先執(zhí)行后判斷”。do-while循環(huán)體里的循環(huán)體里的語(yǔ)句,至少執(zhí)行一次;語(yǔ)句,至少執(zhí)行一次;while語(yǔ)句循環(huán)體里的語(yǔ)句循環(huán)體里的語(yǔ)句可能一次都不執(zhí)行。語(yǔ)句可能一次都不執(zhí)行。 2.4.2 do-while語(yǔ)句語(yǔ)句822.4.3 for語(yǔ)句語(yǔ)句ufor語(yǔ)句的使用語(yǔ)法如下所示。語(yǔ)句的使用語(yǔ)法如下所示。for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; 83for語(yǔ)句的執(zhí)行過(guò)程為:語(yǔ)句的執(zhí)行過(guò)程為:(1)首先計(jì)算表達(dá)式)首先計(jì)算表達(dá)式1的值。的值。(2)判斷表達(dá)式)判斷表達(dá)式2的值是的值是true還是還是false,若表,若表達(dá)式達(dá)式2的值為的值為false,則轉(zhuǎn)而執(zhí)行步驟(,則轉(zhuǎn)而執(zhí)行步驟(4););若表達(dá)式若表達(dá)式2的值是的值是true,則執(zhí)行循環(huán)體中的語(yǔ),則執(zhí)行循環(huán)體中的語(yǔ)句,然后求表達(dá)式句,然后求表達(dá)式3的值。的值。(3

溫馨提示

  • 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)論