變量的更多內(nèi)容_第1頁
變量的更多內(nèi)容_第2頁
變量的更多內(nèi)容_第3頁
變量的更多內(nèi)容_第4頁
變量的更多內(nèi)容_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、變量的更多內(nèi)容類型轉(zhuǎn)換其他數(shù)據(jù)類型(枚舉,結(jié)構(gòu),數(shù)組)類型轉(zhuǎn)換n不管那一種類型,歸根結(jié)底都是一系列的二進(jìn)制位,不同的類型對二進(jìn)制位有不同的解釋方式。n不同類型的變量使用不同的模式來表達(dá)數(shù)據(jù)。把一種類型變量轉(zhuǎn)化為另一種類型變量,可能會(huì)造成一些意外情況,如數(shù)據(jù)精度丟失等。n類型的轉(zhuǎn)換有兩種方式:隱式轉(zhuǎn)換隱式轉(zhuǎn)換:從類型A到B的轉(zhuǎn)換可以在所有情況下進(jìn)行,轉(zhuǎn)換規(guī)則比較簡單,轉(zhuǎn)換由編譯器完成顯式轉(zhuǎn)換顯式轉(zhuǎn)換:從類型A到B的轉(zhuǎn)換只有在某些情況下才能進(jìn)行,轉(zhuǎn)換規(guī)則比較復(fù)雜。隱式轉(zhuǎn)換n考慮var1=var2,如果var2的類型可以隱式轉(zhuǎn)換為var1,哪么編譯器會(huì)進(jìn)行一個(gè)隱式轉(zhuǎn)換,如果var1和var2類型相同

2、,則不需要轉(zhuǎn)換n示例:ushort destinationVar;char sourceVar = a ;destinationVar = sourceVar;Console.WriteLine(sourceVal is: 0,sourcevar);Console.WriteLine(destinationVar is:0,destinationVar);n變量的類型的不同其實(shí)是對二進(jìn)制位解釋方式的不同n隱式轉(zhuǎn)換的條件:不是所有變量之間都有隱式轉(zhuǎn)換的隱式轉(zhuǎn)換規(guī)則:只要類型隱式轉(zhuǎn)換規(guī)則:只要類型B的取值范圍大于的取值范圍大于A的取值范圍,則的取值范圍,則A可以進(jìn)行隱式轉(zhuǎn)可以進(jìn)行隱式轉(zhuǎn)換到換到B顯

3、式轉(zhuǎn)換n顯式轉(zhuǎn)換:明確要求編譯器把數(shù)值從一種類型轉(zhuǎn)換為另一種類型n假如沒有進(jìn)行顯式轉(zhuǎn)換,如下代碼會(huì)報(bào)錯(cuò)byte destinationVar;short sourceVar = 7;destinationVal=sourceVar; Console.WriteLine(sourceVar is:0,sourceVar);Console.WriteLine(destinationVal is:0,destinationVal)n顯式轉(zhuǎn)換顯式轉(zhuǎn)換 destinationVal=(byte)sourceVar; n在有些條件下這樣的轉(zhuǎn)換是可行的,但彼此間沒什么聯(lián)系的數(shù)據(jù)類型是在有些條件下這樣的轉(zhuǎn)換是

4、可行的,但彼此間沒什么聯(lián)系的數(shù)據(jù)類型是不能這樣轉(zhuǎn)換的不能這樣轉(zhuǎn)換的n由數(shù)值比較大的數(shù)據(jù)類型向由數(shù)值比較大的數(shù)據(jù)類型向顯式轉(zhuǎn)換n注意:數(shù)據(jù)表示范圍大的數(shù)據(jù)向數(shù)據(jù)表示范圍小的數(shù)據(jù)轉(zhuǎn)換時(shí),有可能造成數(shù)據(jù)丟失n示例:byte destinationVar;short sourceVar = 285;destinationVal=(byte)sourceVar; Console.WriteLine(sourceVar is:0,sourceVar);Console.WriteLine(destinationVal is:0,destinationVal)顯式轉(zhuǎn)換的檢查n數(shù)據(jù)丟失(在沒有任何提示的情況下)

5、可能會(huì)造成嚴(yán)重的后果。n使用checked和unchecked來對決定是否對數(shù)據(jù)轉(zhuǎn)換進(jìn)行檢查。n示例:byte destinationVar;short sourceVar = 285;destinationVal=checked(byte)sourceVar); Console.WriteLine(sourceVar is:0,sourceVar);Console.WriteLine(destinationVal is:0,destinationVal)n通過設(shè)置項(xiàng)目的屬性讓程序自動(dòng)檢查是否有數(shù)據(jù)溢出使用Convert進(jìn)行顯式類型轉(zhuǎn)換注意:注意:1.不同轉(zhuǎn)換中不同轉(zhuǎn)換中val是滿足不同的規(guī)則

6、的,如是滿足不同的規(guī)則的,如Convert.ToInt32(val)中中val不能是不能是非數(shù)字的字符串如非數(shù)字的字符串如“abc1”2.使用這種方式進(jìn)行轉(zhuǎn)換要進(jìn)行溢出檢查使用這種方式進(jìn)行轉(zhuǎn)換要進(jìn)行溢出檢查n short shortResult, shortVal = 4;n int integerVal = 67;n long longResult;n float floatVal = 10.5F;n double doubleResult, doubleVal = 99.999;n string stringResult,stringVal=17;n bool boolVal = true

7、;n Console.WriteLine(數(shù)據(jù)轉(zhuǎn)換示例:n);n doubleResult = floatVal * shortVal;n Console.WriteLine(隱式,-double:0*1-2, floatVal, shortVal, doubleResult);n shortResult = (short)floatVal;n Console.WriteLine(顯式,-short:0-1, floatVal, shortResult);n stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVa

8、l);n Console.WriteLine(顯式,-string:0+1-2,n boolVal, doubleVal, stringResult);n longResult = integerVal + Convert.ToInt64(stringVal);n Console.WriteLine(混合,-long: 0+1-2,n integerVal, stringVal, longResult);復(fù)雜的變量類型n枚舉n結(jié)構(gòu)n數(shù)組枚舉n枚舉行變量存儲(chǔ)的是一系列分立的有限集合中的值。我們可以定義一個(gè)orientation類型的變量可以存儲(chǔ)north,south,east或west中的值n用

9、法:enum typeName value1,value2,value3,.typeName varName;varName = typeName.value1;枚舉示例enum orientation North,West,East,South static void Main(string args) orientation position; position = orientation.West; string myString; myString = Hello!;n枚舉類型的變量既然代表一系列分立的值,這些值也有自己的類型,這些值的類型可以通過如下方式來指定:nenum typeN

10、ame:underlyingType value1,value2,value3.nunderlyingType默認(rèn)為int,但也可以是byte,sbyte,short,ushort,int,uint,long,ulongn默認(rèn)情況下,value1,value2,.自動(dòng)代表從0,1開始的一系列值,但這個(gè)值是可以自由指定的nenum typeName:underlyingnn value1 = actualVal1,n value2 = actualVal2,n value3, /value3的值會(huì)是actualVal2 +1n value4 = acturalVal3,n .nenum type

11、Name:underlyingvalue1 = actualVal1, value2, value3 = value1, /將導(dǎo)致value2和value4的值相同 value4, .不要使用循環(huán)賦值:enum typeName:underlyingvalue1 = value2,value2 = value1示例nenum orientaion:byte north=1,south=2,east=3,west=4nstatic void Main(string args)nn orientation myDirection = orientation.north;n Console.Writ

12、e(myDirection=0,myDirection);nn enum orientaion : byte north = 1, south = 2, east = 3, west = 4 n static void Main(string args)n n byte directionByte;n string directionString;n orientaion myDirection = orientaion.north;n Console.WriteLine(myDirection = 0, myDirection);n directionByte = (byte)myDirec

13、tion;n directionString = Convert.ToString(myDirection);n Console.WriteLine(byte equivalent=0, directionByte);n Console.WriteLine(string equivalent=0, directionString);n 示例結(jié)構(gòu)n結(jié)構(gòu)就是由幾個(gè)簡單數(shù)據(jù)類型組成的數(shù)據(jù)結(jié)構(gòu)。n定義結(jié)構(gòu)struct /結(jié)構(gòu)成員的聲明n聲明的格式為n n enum orientation North,West,South,Eastn struct routen n public orientation

14、 direction;n public double distance;n n定義了結(jié)構(gòu)類型之后,我們可以定義變量:nroute myRoute;nmyRoute.direction = orientation.North;nmyRoute.distance = 56.5;nnamespace Ch05Ex03nn enum orientation : byten n north = 1,n south = 2,n east = 3,n west = 4n n struct routen n public orientation direction;n public double distan

15、ce;n n class Programn n static void Main(string args)n n route myRoute;n int myDirection = -1;n double myDistance;n Console.WriteLine(1)North n2) Southn3) Easen4) West);n don n Console.WriteLine(選擇一個(gè)方向:);n myDirection = Convert.ToInt32(Console.ReadLine();n while (myDirection 4);n Console.WriteLine(輸

16、入一個(gè)距離:);n myDistance = Convert.ToDouble(Console.ReadLine();n myRoute.direction = (orientation)myDirection;n myRoute.distance = myDistance;n Console.WriteLine(myRoute指定的方向是:0,距離是:1,myRoute.direction,myRoute.distance);n n nn class Programn n enum Gender Male=1,Femal=2n struct Person n n public string

17、Name;n public double Height;n public int Age;n public Gender Sex;n n static void Main(string args)n n Person person1;n Console.WriteLine(請輸入你的姓名:);n person1.Name = Console.ReadLine();n Console.WriteLine(請輸入你的身高:);n person1.Height =Convert.ToDouble(Console.ReadLine();n Console.WriteLine(請輸入你的年齡:);n p

18、erson1.Age = Convert.ToInt32(Console.ReadLine();n Console.WriteLine(請輸入你的性別:n1) 男 n2)女);n person1.Sex = (Gender)Convert.ToInt32(Console.ReadLine();n Console.WriteLine(以下是你的個(gè)人信息:n姓名:0n身高:1n年齡:2n性別:3n,n person1.Name,person1.Height,person1.Age,person1.Sex);n n 考慮-把下列字符串輸出到控制臺(tái)string friendName1 = Robert

19、 Barwell;string friendName2 = Mike Parry;string firendName3 = Jeremy Beacock; Console.WriteLine(friendName1); Console.WriteLine(friendName2); Console.WriteLine(friendName3);數(shù)組n可以同時(shí)存儲(chǔ)類型相同的多個(gè)值。n對與如下變量:string friendName1 = Robert Barwell;string friendName2 = Mike Parry;string firendName3 = Jeremy Beaco

20、ck;n我們沒有辦法對上面的變量進(jìn)行循環(huán)批量處理。我們可以用數(shù)組來存貯一系列相同類型的變量n聲明: 如:int myIntArray;n初始化:通過指定數(shù)組的字面值nint myIntArray = 5,9,10,2,99使用new初始化nint myIntArray = new int5混合方式nint myIntArray = new int55,9,10,2,98n數(shù)組的大小和元素個(gè)數(shù)必須匹配數(shù)組nstring friendNames =Robert Barwell,Mike Parry,Jeremy Beacock;nint i;nConsole.WriteLine(我一共有 0位朋友

21、,firendNames.Length);nfor (i = 0;ifirendNames.Length;i+)nn Console.Write(friendNamesi);nforeach循環(huán)nforeach ( in )nn /can use for each elementn多維數(shù)組nstring friendNames = Robert Barwell,nMike Parry,Jeremy Beacock;nConsole.WriteLine(這里有0位朋友 ,nfriendNames.Length);nforeach(string friendName in friendNames)

22、nn Console.WriteLine(friendName);n多維數(shù)組n聲明:n , ; /(2維)n , ; /(3維)n示例:n double, z= new double10,10; n double, z1 = 1,2,3,4,2,3,4,5,3,4,5,6n訪問數(shù)組中的元素:n z12,3foreach遍歷多維數(shù)組ndouble , hillHeight = 1,2,3,4,2,3,4,5,n3,4,5,6;nforeach (double height in hillHeight)nn Console.Write(0,height);n數(shù)組的數(shù)組n如果數(shù)組的元素是數(shù)組我們可以

23、這樣定義n int jaggedIntArray; /聲明n/以下為初始化njaggedIntArray = new int2;njaggedIntArray0 = new int3;njaggedIntArray1 = new int4;n/也可以這樣初始化njaggedIntArray = n new int2,3,4,new int3,4,5,6foreach遍歷n對于數(shù)組的數(shù)組遍歷要這樣:n n int diversorlTo10 = n new int 1,n new int 1,2,n new int 2,3,n ;n foreach (int diveisorsOfInt in

24、diversorlTo10)n n foreach (int divisor in diveisorsOfInt)n n Console.WriteLine(divisor);n n 數(shù)組練習(xí)n依次讀取10次用戶的輸入并把輸入放入數(shù)組中,然后循環(huán)打印出用戶的輸入n依次讀取10次輸入,求出平均值n一維數(shù)組有n個(gè)int類型的元素,找出最大值n將一個(gè)一位數(shù)組a10中的元素值按逆序重新存放.假定數(shù)組中原來元素順序?yàn)?1,3,5,7,9,8,6,4,2,0,按逆序重新存放后元素的值位:0,2,4,6,8,9,7,5,3,1。n對于一個(gè)n*n的整數(shù)二維數(shù)組求對角線上數(shù)的和n一個(gè)數(shù)組有0或1組成,編程分別求

25、出0和1的個(gè)數(shù)n求出1到100所有的質(zhì)數(shù)結(jié)構(gòu)練習(xí)n定義一個(gè)“足球”結(jié)構(gòu),要求有足球的半徑,顏色成員變量nstruct expressionnn pubic int x;public int y;n字符串處理nstring myString = A string;nchar myChar = myString1; /只讀數(shù)組nstring myString = A string;nchar myChar = myString.ToCharArray();nmyChar0 = B;nforeach(char c in myChar)nn Console.Write(c);nnforeach(char c1 in myString)nn Console.Write(c1);nn獲取字符串長度: string myString = Hello!; Console.Write(myString 的長度是:0,myString.Length);n把字符串轉(zhuǎn)換為大寫或小寫: string myString = Hello!; Console.WriteLine(大寫:0,myString.ToUpper(); Console.WriteLine(小寫:0,myString.ToLower();示例: string inputString

溫馨提示

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

評論

0/150

提交評論