![第3章常用數(shù)據(jù)類型的用法new_第1頁](http://file4.renrendoc.com/view/bb5ea124fc6eb07d16c8199dea81de90/bb5ea124fc6eb07d16c8199dea81de901.gif)
![第3章常用數(shù)據(jù)類型的用法new_第2頁](http://file4.renrendoc.com/view/bb5ea124fc6eb07d16c8199dea81de90/bb5ea124fc6eb07d16c8199dea81de902.gif)
![第3章常用數(shù)據(jù)類型的用法new_第3頁](http://file4.renrendoc.com/view/bb5ea124fc6eb07d16c8199dea81de90/bb5ea124fc6eb07d16c8199dea81de903.gif)
![第3章常用數(shù)據(jù)類型的用法new_第4頁](http://file4.renrendoc.com/view/bb5ea124fc6eb07d16c8199dea81de90/bb5ea124fc6eb07d16c8199dea81de904.gif)
![第3章常用數(shù)據(jù)類型的用法new_第5頁](http://file4.renrendoc.com/view/bb5ea124fc6eb07d16c8199dea81de90/bb5ea124fc6eb07d16c8199dea81de905.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章常用數(shù)據(jù)類型的用法3.1字符串3.2數(shù)組3.3枚舉3.4泛型3.5泛型集合3.6日期與時(shí)間處理3.7數(shù)學(xué)運(yùn)算3.8隨機(jī)數(shù)3.1字符串String類(string)
string類型是一個(gè)密封類型(不能被繼承),其實(shí)例表示Unicode字符串,每個(gè)英文字母、漢字都占兩個(gè)字節(jié)。創(chuàng)建字符串stringmyString=“sometext”;//直接賦字符串常量值strings2=newstring(‘a(chǎn)’,2);//調(diào)用構(gòu)造函數(shù),結(jié)果為aastringstr=“C:\\test\\first.cs”//含轉(zhuǎn)義字符,用雙\\stringstr=@“C:\test\first.cs”//含轉(zhuǎn)義字符,加@后表示字符串內(nèi)的\不是轉(zhuǎn)義字符獲取字符串的某個(gè)字符stringmyString=“sometext”;charch=myString[2];//結(jié)果為m,string下標(biāo)是0-based
String類的成員ToString()方法返回表示當(dāng)前對(duì)象的字符串。ToString()參數(shù)可空,也可以加一個(gè)格式化參數(shù)Objecto=newObject();Console.WriteLine(o.ToString());//Printsout:"System.Object"String.Empty表示空字符串strings="";
strings2=string.Empty;
if(s==string.Empty){
//
}3.1字符串字符串比較方法string.Compare(strings1,strings2)
如果s1大于s2,結(jié)果為1;
如果s1等于s2,結(jié)果為0;
如果s1小于s2,結(jié)果為-1。string.Compare(strings1,strings2,boolignoreCase)
ignoreCase確定是否區(qū)分大小寫比較兩個(gè)字符串是否相等,還可使用:Equals方法和==equals():比較的是兩個(gè)對(duì)象的內(nèi)容是否一致==:比較字符串的值
附:==運(yùn)算符規(guī)則對(duì)于值類型,如果對(duì)象的值相等,則==返回true,否則返回false。對(duì)于引用類型:對(duì)于string類型,==比較字符串的值。string以外的引用類型,如果兩個(gè)對(duì)象引用同一個(gè)對(duì)象,則==返回true。3.1字符串
字符串查找Contains方法:用于查找一個(gè)字符串中是否包含指定的子字符串。語法為:publicboolContains(stringvalue)
例如:stringstr1="thisisastring.";
boolb=str1.Contains("is");IndexOf方法:求某個(gè)字符s或者子串s在字符串中出現(xiàn)的位置。兩種最常用的重載形式:publicintIndexOf(strings)publicintIndexOf(strings,intstartIndex)LastIndexOf方法:LastIndexOf方法的用法與IndexOf方法相同,查找最后一次出現(xiàn)的位置。
3.1字符串例如:stringstr1="this
isastring.";Console.WriteLine(str1.IndexOf("is"));//結(jié)果為2(注意序號(hào)從0開始)Console.WriteLine(str1.LastIndexOf("is"));//結(jié)果為5IndexOfAny方法:查找某個(gè)字符串中是否包含某些字符(多個(gè)不同的字符):只要發(fā)現(xiàn)包含這些字符中的任何一個(gè)字符即可。
常用語法:publicintIndexOfAny(char[]anyOf)
例如:strings1="123abc123abc123";char[]c={'a','b','5','8'};intx=s1.IndexOfAny(c);//x結(jié)果為33.1字符串截取字符串
Substring(intstartIndex,intcount)截取字符串從startIndex位開始,截取長(zhǎng)度為count的字符串例如: stringstr=“abc123”; stringss=str.Substring(1,4);
//(0-based) Console.WriteLine(ss);//bc123.1字符串刪除指定數(shù)量的字符Remove(intstartIndex,intcount)
例如:stringstr1="thisisastring.“Console.WriteLine(str1.Remove(1,2));//結(jié)果為tsisastring字符串替換Replace(stringoldStr,stringnewStr)例如:stringstr1="thisisastring.“Console.WriteLine(str1.Replace("is","xy"));//結(jié)果為thxyxyastring3.1字符串插入字符串
例如:strings1="abcdabcd"; strings2=s1.Insert(2,"12");//結(jié)果為"ab12cdabcd“從字符串開頭或結(jié)尾刪除指定的字符:利用TrimStart刪除字符串首部空格,利用TrimEnd刪除字符串尾部空格,利用Trim刪除字符串首部和尾部空格。例如:
strings1="□□□□thisisabook";strings2="thatisapen□□□□";strings3="□□isapen□□";Console.WriteLine(s1.TrimStart());//刪除首部空格Console.WriteLine(s2.TrimEnd());//刪除尾部空格Console.WriteLine(s3.Trim());//刪除首部和尾部空格3.1字符串字符串的合并與拆分Join方法:字符串?dāng)?shù)組->字符串在數(shù)組的每個(gè)元素之間串聯(lián)指定的分隔符,從而產(chǎn)生單個(gè)串聯(lián)的字符串。語法為:publicstaticstringJoin( stringseparator,string[]value)Split方法:字符串->字符串?dāng)?shù)組將字符串按照指定的一個(gè)或多個(gè)字符進(jìn)行分離,從而得到一個(gè)字符串?dāng)?shù)組。常用語法為:publicstring[]Split(paramschar[]separator)字符串的合并和拆分舉例例如:string[]sArray1={"123","456","abc"};strings1=string.Join(",",sArray1);//結(jié)果為"123,456,abc"string[]sArray2=s1.Split(',');//sArray2得到的結(jié)果與sArray1相同strings2="abc12;34,56";string[]sArray3=s2.Split(',',';','');//分隔符為逗號(hào)、分號(hào)、空格Console.WriteLine(string.Join(Environment.NewLine,sArray3));輸出結(jié)果:abc1234563.1字符串ToUpper大寫ToLower小寫例如:strings1="Thisisastring";strings2=s1.ToUpper();//s2結(jié)果為THISISASTRINGstrings3=Console.ReadLine();if(s3.ToLower()=="yes"){Console.WriteLine("OK");}3.2String和StringBuilderString類實(shí)際上表示的是一系列不可變的字符。說其實(shí)例是“不可變的”,是因?yàn)闊o法直接修改給該字符串分配的堆中的字符串。例如,在myString的后面接上另一個(gè)字符串:myString+="andabitmore";
其實(shí)際操作并不是在原來myString所占內(nèi)存空間的后面直接附加上第二個(gè)字符串,而是返回一個(gè)新String實(shí)例,即重新為新字符串分配內(nèi)存空間。StringBuilder類位于System.Text名稱空間下,使用StringBuilder類每次重新生成新字符串時(shí)不是再生成一個(gè)新實(shí)例,而是直接在原來字符串占用的內(nèi)存空間上進(jìn)行處理,而且它可以動(dòng)態(tài)的分配占用的內(nèi)存空間大小。StringBuilder類用法舉例【例3-1】StringBuilder類的基本用法。usingSystem;usingSystem.Text;namespaceStringBuilderExample{classProgram{publicstaticvoidMain(){StringBuilders1=newStringBuilder();s1.Append("string1");s1.AppendLine("string2");s1.Append("string3");strings2=s1.ToString();Console.WriteLine(s2);Console.ReadLine();}}}3.3數(shù)組
數(shù)組用于存儲(chǔ)同一種類型的數(shù)據(jù)。數(shù)組是一種引用類型,而不是值類型。數(shù)組是按照數(shù)組名、數(shù)據(jù)元素的類型和維數(shù)來描述的。C#中可以有一維數(shù)組、多維數(shù)組、交錯(cuò)數(shù)組。1.數(shù)組的聲明與初始化聲明數(shù)組時(shí),既可以一開始就指定數(shù)組元素的個(gè)數(shù),也可以一開始不指定元素個(gè)數(shù),而是在使用數(shù)組元素前動(dòng)態(tài)地指定元素個(gè)數(shù)。例如:int[]a=newint[30];//0-basedstring[]mystring={“first”,“second”,“third”};//簡(jiǎn)化形式,不帶new的只能用在聲明語句中.
例如: string[]mystring; mystring={“first”,“second”,“third”};//error mystring=newstring[]{“first”,“second”,“third”};//right數(shù)組的聲明語法舉例
數(shù)組類型語法例子一維數(shù)組數(shù)據(jù)類型[]數(shù)組變量;int[]myArray;二維數(shù)組數(shù)據(jù)類型[,]數(shù)組變量;int[,]myArray;三維數(shù)組數(shù)據(jù)類型[,,]數(shù)組變量;int[,,]myArray;交錯(cuò)數(shù)組每一個(gè)元素又是一個(gè)數(shù)組數(shù)據(jù)類型[][]數(shù)組變量;int[][]myArray;數(shù)組的秩與數(shù)組長(zhǎng)度2.數(shù)組的秩與數(shù)組長(zhǎng)度數(shù)組的秩(rank)是指數(shù)組的維數(shù),例如一維數(shù)組秩為1,二維數(shù)組秩為2。數(shù)組長(zhǎng)度是指數(shù)組中所有元素的個(gè)數(shù)。例如:int[]a=newint[10];//數(shù)組長(zhǎng)度為10int[,]b=newint[3,5];//數(shù)組長(zhǎng)度為3*5=15,其中第0維長(zhǎng)度為3,第1維長(zhǎng)度為5數(shù)組3.一維數(shù)組在C#中,數(shù)組的下標(biāo)默認(rèn)是從0開始索引的。Length屬性表示數(shù)組的長(zhǎng)度。4.多維數(shù)組多維數(shù)組指維數(shù)大于1的數(shù)組,常用的是二維數(shù)組和三維數(shù)組。C#語言支持兩種類型的二維數(shù)組,一種是二維矩形數(shù)組,另一種是二維交錯(cuò)數(shù)組。對(duì)于二維矩形數(shù)組,數(shù)組中的每一行都有相同的列數(shù)。例如:int[,]n2=newint[,]{{1,2},{3,4},{5,6}};數(shù)組用法舉例【例3-2】編寫一個(gè)控制臺(tái)應(yīng)用程序,定義一個(gè)二維數(shù)組,分別輸出數(shù)組的秩、數(shù)組長(zhǎng)度以及數(shù)組中的每個(gè)元素值。staticvoidMain(string[]args){int[,]b=newint[3,5];Console.WriteLine("b的秩為:{0}",b.Rank);//結(jié)果為2Console.WriteLine("b的長(zhǎng)度為:{0}",b.Length);//結(jié)果為15for(inti=0;i<b.GetLength(0);i++)//b.GetLength(0)指獲取第0維的長(zhǎng)度
{for(intj=0;j<b.GetLength(1);j++)//b.GetLength(1)指獲取第1維的長(zhǎng)度
{Console.Write("b[{0},{1}]={2}\t",i,j,b[i,j]);}Console.WriteLine();}Console.ReadLine();}}數(shù)組5.交錯(cuò)數(shù)組交錯(cuò)數(shù)組相當(dāng)于一維數(shù)組的每一個(gè)元素又是一個(gè)數(shù)組,也可以把交錯(cuò)數(shù)組稱為“數(shù)組的數(shù)組”。例如:int[][]n1=newint[2][]{newint[]{2,4,6},newint[]{1,3,5,7,9}};交錯(cuò)數(shù)組的每一個(gè)元素既可以是一維數(shù)組,也可以是多維數(shù)組。交錯(cuò)數(shù)組用法舉例【例3-3】交錯(cuò)數(shù)組的用法。publicstaticvoidMain(){string[][]b=newstring[3][];b[0]=newstring[2]{"b11","b12"};b[1]=newstring[3]{"b21","b22","b23"};b[2]=newstring[5]{"a","e","i","o","u"};for(inti=0;i<b.Length;i++){for(intj=0;j<b[i].Length;j++){Console.Write("b[{0}][{1}]={2}",i,j,b[i][j]);}Console.WriteLine();}Console.ReadLine();}數(shù)組6.動(dòng)態(tài)改變數(shù)組的大小Resize方法publicstaticvoidResize<T>(refT[]array,intnewSize)
這是一種泛型表示形式。其中T表示數(shù)組類型,array為要調(diào)整大小的一維數(shù)組,該數(shù)組從零開始;如果為null則新建具有指定大小的數(shù)組。如果newSize大于舊數(shù)組的Length,則分配一個(gè)新數(shù)組,并將所有元素從舊數(shù)組復(fù)制到新數(shù)組。如果newSize小于舊數(shù)組的Length,則分配一個(gè)新數(shù)組,并將元素從舊數(shù)組復(fù)制到新數(shù)組直到新數(shù)組被填滿為止;舊數(shù)組中的剩余元素將被忽略。如果newSize與舊數(shù)組的Length相等,則此方法不執(zhí)行任何操作。動(dòng)態(tài)改變數(shù)組的大小舉例【例3-4】演示如何動(dòng)態(tài)改變一維數(shù)組的大小。
staticvoidMain(string[]args){String[]myArr={"fox","lazy","dog"};Console.WriteLine("初始值:");PrintArrayValues(myArr);Array.Resize(refmyArr,myArr.Length+2);Console.WriteLine("調(diào)整為較大的長(zhǎng)度后的值:");PrintArrayValues(myArr);Array.Resize(refmyArr,4);Console.WriteLine("調(diào)整為較小的長(zhǎng)度后的值:");PrintArrayValues(myArr);Console.ReadLine();}publicstaticvoidPrintArrayValues(String[]myArr){for(inti=0;i<myArr.Length;i++){Console.WriteLine("[{0}]:{1}",i,myArr[i]);}}}數(shù)組7.數(shù)組元素的排序與查找C#語言中還提供了Sort和Reverse這樣的靜態(tài)方法,這些方法用快速排序算法將一維數(shù)組中的元素按照升序或降序排列。還可以方便地查找指定的元素。例如Contains方法和IndexOf方法等。數(shù)組排序和查找舉例【例3-5】一維數(shù)組的排序和查找。數(shù)組的統(tǒng)計(jì)以及數(shù)組和字符串間的轉(zhuǎn)換利用數(shù)組的Average方法、Sum方法、Max方法和Min方法可以求數(shù)組中所有元素的平均值、求所有元素的和、最大值和最小值。對(duì)于字符串?dāng)?shù)組,可以直接利用字符串的Join方法和Split方法實(shí)現(xiàn)字符串和字符串?dāng)?shù)組之間的轉(zhuǎn)換。數(shù)組元素統(tǒng)計(jì)和字符串轉(zhuǎn)換舉例【例3-6】演示如何統(tǒng)計(jì)數(shù)組中的元素以及如何實(shí)現(xiàn)int數(shù)組和字符串之間的轉(zhuǎn)換。補(bǔ)充:字節(jié)數(shù)組byte[]和string的轉(zhuǎn)換string類型轉(zhuǎn)成byte[]:
byte[]byteArray=System.Text.Encoding.Default.GetBytes(str);反過來,byte[]轉(zhuǎn)成string:
stringstr=System.Text.Encoding.Default.GetString(byteArray);Encoding.Default:獲取操作系統(tǒng)的當(dāng)前ANSI代碼頁的編碼。由
Default定義的系統(tǒng)
ANSI代碼頁包含
ASCII字符集,但是其編碼不同于
ASCII的編碼。由于所有的Default編碼會(huì)丟失數(shù)據(jù),因此應(yīng)用程序可以改用UTF8代替。在U+00到U+7F的范圍內(nèi),UTF-8與ASCII通常是相同的,但是可以在不丟失數(shù)據(jù)的情況下對(duì)其他字符進(jìn)行編碼。在處理文本時(shí),經(jīng)常需要處理Encoding的概念。存在這個(gè)問題的原因在于,在.NET程序內(nèi)文本只是string和char對(duì)象,而保存到硬盤時(shí),或者準(zhǔn)備用socket把它發(fā)送出去時(shí),都得先轉(zhuǎn)換成byte[]或者字節(jié)流。而轉(zhuǎn)換的算法,就是Encoding。一臺(tái)機(jī)器用socket發(fā)送一段文本到另一臺(tái)機(jī)器,兩邊都設(shè)定編碼方式為Encoding.Default,如果發(fā)送的是非western字符,則接受方必然會(huì)得到亂碼。所以在面對(duì)中文且為ANSI編碼的情況下,最好不要用Encoding.Default,而用Encoding.GetEncoding("gb2312"),或者更直接的Encoding.GetEncoding(936);而如果有可能的話,最好全部使用unicode,比如utf-8,也就是Encoding.UTF8。有了unicode之后,其實(shí)我們不需要代碼頁的概念。其它編碼方式的,如:System.Text.UTF8,System.Text.Unicode等;例如:
string類型轉(zhuǎn)成ASCIIbyte[]:"01"轉(zhuǎn)成byte[]=newbyte[]{0x30,0x31}
byte[]byteArray=System.Text.Encoding.ASCII.GetBytes(str);
ASCIIbyte[]轉(zhuǎn)成string:byte[]=newbyte[]{0x30,0x31}轉(zhuǎn)成"01"
stringstr=System.Text.Encoding.ASCII.GetString(byteArray);示例:數(shù)據(jù)庫中圖片的處理:1)從數(shù)據(jù)庫中讀出圖片(以image類型存儲(chǔ)的),并且寫入txt文件中:byte[]image=(byte[])myTable.Rows[0]["ImageFile"];stringFS=Encoding.ASCII.GetString(image);WriteStr(@"F:\test.txt",FS);2)把圖片從txt文件中讀出然后存入數(shù)據(jù)庫中。
stringss=ReadStr(@"F:\test.txt");
byte[]b=Encoding.ASCII.GetBytes(ss);
stringsql="updatePersonssetImageFile=@imgwherePersonID=1";SqlParametersp=newSqlParameter("@img",SqlDbType.Image);sp.Value=b;myCommand.Parameters.Add(sp);myCommand.ExecuteNonQuery();3.3枚舉枚舉(enum)是一組命名常量的集合,稱為枚舉成員列表。它可以為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號(hào),從而使代碼更清晰,也易于維護(hù)。聲明enum類型變量的語法為:
[附加聲明][訪問修飾符]enum名稱[:數(shù)據(jù)類型]{枚舉列表}
例如:enumNumber1:byte{x1=3,x2=5}//x1常量為3,x2常量為5enumNumber2:byte{x1=3,x2}//x1常量為3,x2常量在前一個(gè)常量自動(dòng)+1為4enumdays{Mon,Tue,Wed,Thu,F(xiàn)ri,Sat}//默認(rèn):常量為int,Mon:0…Sat:6
注意:enumdays:byte{X1=255,X2}//錯(cuò)誤,X2越byte界3.4泛型
泛型是C#2.0中的新增元素(C++中稱為模板),主要用于解決一系列類似的問題。這種機(jī)制允許將類名作為參數(shù)傳遞給泛型類型,并生成相應(yīng)的對(duì)象。將泛型(包括類、接口、方法、委托等)看作模板可能更好理解,類名稱傳遞給模板中的變體部分,從而得到一個(gè)新的類型定義。3.4泛型泛型(Generic)是具有占位符(類型參數(shù))的類、結(jié)構(gòu)、接口和方法與普通類的區(qū)別:泛型多了一個(gè)或多個(gè)表示類型的類型參數(shù),這些類型參數(shù)用尖括號(hào)括起來。例如:publicclassMyClass<T>{publicTMyProp{get;set;}//定義屬性MyProppublicvoidPrint(){Console.WriteLine(MyProp);}}泛型【例3-8】演示泛型的定義與用法。classProgram{publicstaticvoidSwap<T>(refTitem1,refTitem2){Ttemp=item1;item1=item2;item2=temp;}staticvoidMain(){Doubled1=0,d2=2;Console.WriteLine("交換前:{0},{1}",d1,d2);
Swap(refd1,refd2);Console.WriteLine("交換后:{0},{1}",d1,d2);Console.ReadLine();}}可空泛型假如您有一個(gè)數(shù)字類型的變量,用于控制從數(shù)據(jù)庫中獲取的數(shù)值。數(shù)據(jù)庫可能為這個(gè)變量返回一個(gè)null值。您需要一個(gè)簡(jiǎn)潔的方法來存儲(chǔ)這個(gè)數(shù)值,即使返回?cái)?shù)值為null。解決方案:使用可空類型。有兩個(gè)創(chuàng)建可空類型的方法。System.Nullable<T>variable-或-T?variableT是可空類型的基礎(chǔ)類型。T可以是包括struct在內(nèi)的任何值類型;但不能是引用類型。本質(zhì)上,下面兩個(gè)聲明是等價(jià)的:int?myDBInt=null;Nullable<int>myDBInt=newNullable<int>();兩個(gè)聲明中,myDBInt都被認(rèn)為是可空類型并初始化為null。一個(gè)可空類型實(shí)現(xiàn)了InullableValue接口,它只有兩個(gè)屬性成員:HasValue和Value。如果把可空類型設(shè)置為null,HasValue屬性將返回false,否則將返回true。測(cè)試可空類型方法第一,使用HasValue屬性如下:
if(myDBInt.HasValue)//HasValue成員用于在嘗試顯示變量之前測(cè)試它是否包含值 Console.WriteLine("Hasavalue:"+myDBInt.Value);else Console.WriteLine("Doesnothaveavalue(NULL)");第二種方法是跟null對(duì)比:
if(myDBInt!=null)Console.WriteLine("Hasavalue:"+myDBInt.Value);elseConsole.WriteLine("Doesnothaveavalue(NULL)");集合類型集合是OOP中的一個(gè)重要概念,C#中對(duì)集合的全面支持更是該語言的精華之一。集合類型是數(shù)據(jù)集合的常見變體,例如哈希表、隊(duì)列、堆棧、字典和列表。根據(jù)存儲(chǔ)元素的方式、對(duì)元素進(jìn)行排序的方式、執(zhí)行搜索的方式以及進(jìn)行比較的方式的不同,集合可能也有所不同。Queue類和Queue<(Of<(T>)>)泛型類提供先進(jìn)先出列表,而Stack類和Stack<(Of<(T>)>)泛型類提供后進(jìn)先出列表。Hashtable類和Dictionary<(Of<(TKey,TValue>)>)泛型類提供非排序的集合類型。SortedList類和SortedList<(Of<(TKey,TValue>)>)泛型類提供Hashtable類和Dictionary<(Of<(TKey,TValue>)>)泛型類的排序的版本。Hashtable或Dictionary<(Of<(TKey,TValue>)>)中的元素只能通過元素的鍵訪問;而SortedList或KeyedCollection<(Of<(TKey,TItem>)>)中的元素既可以通過元素的鍵訪問,也可以通過元素的索引訪問。所有集合中的索引都從零開始。不過Array除外,它允許使用索引不從零開始的數(shù)組。3.5泛型集合在System.Collections.Generic命名空間下,提供了常用的泛型集合類。泛型集合類非泛型集合類泛型集合用法舉例List<T>ArrayListList<string>dinosaurs=newList<string>();Dictionary<TKey,Tvalue>HashtableDictionary<string,string>d=newDictionary<string,string>();
d.Add("txt","notepad.exe");Queue<T>QueueQueue<string>q=newQueue<string>();
q.Enqueue("one");Stack<T>StackStack<string>s=newStack<string>();
s.Push("one");
s.Pop();SortedList<TKey,TValue>SortedListSortedList<string,string>list=newSortedList<string,string>();
list.Add("txt","notepad.exe");
list.TryGetValue("tif",outvalue))1-哈希集合HashSet<T>是在System.Collections.Generic命名空間中包含一個(gè)集合類。HashSet用于數(shù)學(xué)集合運(yùn)算.常用方法:Add():如果某元素不在集合中,Add()方法就把該元素添加到集合中。在其返回值Boolean中,返回元素是否添加的信息Clear():刪除集合中的所有元素Remove():刪除指定的元素RemoveWhere():刪除滿足謂詞條件的所有元素CopyTo():把集合中的元素復(fù)制到一個(gè)數(shù)組中ExceptWith():把一個(gè)集合作為參數(shù),從集中刪除該集合中的所有元素IntersectWith():修改當(dāng)前的HashSet(OfT)對(duì)象,以僅包含該對(duì)象和指定集合中存在的元素。UnionWith():把傳送為參數(shù)的集合中的所有元素添加到集中詳見表3-32-字典和排序字典Dictionary<TKey,TValue>泛型類提供了從一組鍵key到一組值value的映射(key-value)。字典中的每個(gè)添加項(xiàng)都由一個(gè)值及其相關(guān)聯(lián)的鍵組成,通過鍵來檢索值。該泛型類提供的常用方法如下。Add方法:將帶有指定鍵和值的元素添加到字典中。TryGetValue方法:獲取與指定的鍵相關(guān)聯(lián)的值。ContainsKey方法:確定字典中是否包含指定的鍵。Remove方法:從字典中移除帶有指定鍵的元素。Dictionary<TKey,TValue>類與Hashtable類的功能相同。對(duì)于值類型,Dictionary<TKey,TValue>的性能優(yōu)于Hashtable,這是因?yàn)镠ashtable的元素屬于Object類型,所以在存儲(chǔ)或檢索值類型時(shí)通常發(fā)生裝箱和取消裝箱操作。HashtableHashtable集合中的每個(gè)元素都是一個(gè)鍵/值對(duì)。在Hashtable中用作元素的每一對(duì)象使用GetHashCode方法為其自身生成哈希代碼,該哈希代碼是基于該元素的鍵。Hashtable集合基于散列值,插入元素的操作非常快,不需要像List<T>類那樣重排集合。3-列表和排序列表C#為動(dòng)態(tài)列表提供了類List<T>和ArrayList。System.Collections.Generic命名空間中的類List<T>的用法非常類似于System.Collections命名空間中的ArrayList類。List<T>泛型類表示可通過索引訪問的強(qiáng)類型對(duì)象列表,該類提供了對(duì)列表進(jìn)行搜索、排序和操作的方法。[強(qiáng)類型:為所有變量指定數(shù)據(jù)類型稱為“強(qiáng)類型”,強(qiáng)類型嚴(yán)格的在編譯期進(jìn)行檢查]創(chuàng)建列表List<int>intList=newList<int>();List<Racer>racers=newList<Racer>();如
3-列表和排序列表常用方法如下:Add方法:將指定值的元素添加到列表中。Insert方法:在列表的中間插入一個(gè)新元素。Contains方法:測(cè)試該列表中是否存在某個(gè)元素。Remove方法:從列表中移除帶有指定鍵的元素。Clear方法:移除列表中的所有元素。SortedList<T>排序列表,用法與List<T>類似。SortedList表示鍵/值對(duì)的集合,這些鍵值對(duì)按鍵排序并可按照鍵和索引訪問。如
列表和排序列表舉例【例3-9】演示泛型列表的定義與用法。4-鏈表LinkedList<T>為雙向鏈表。LinkedList<T>對(duì)象中的每個(gè)節(jié)點(diǎn)都屬于LinkedListNode<T>類型。每個(gè)節(jié)點(diǎn)又指向其Next節(jié)點(diǎn)和Previous節(jié)點(diǎn)。LinkedList<T>可以保存null值并且允許有重復(fù)的元素。如果LinkedList<T>為空,則First和Last屬性為null。string[]words={"the","fox","jumped","over","the","dog"};LinkedList<string>sentence=newLinkedList<string>(words);//Addtheword'today'tothebeginningofthelinkedlist.sentence.AddFirst("today");//Movethefirstnodetobethelastnode.LinkedListNode<string>mark1=sentence.First;sentence.RemoveFirst();sentence.AddLast(mark1);//Changethelastnodebe'yesterday'.sentence.RemoveLast();sentence.AddLast("yesterday");//Indicate'fox'node.current=sentence.Find("fox");5-隊(duì)列Queue<T>泛型類表示對(duì)象的先進(jìn)先出(LILO)集合。隊(duì)列在按接收順序存儲(chǔ)消息方面非常有用,存儲(chǔ)在隊(duì)列中的對(duì)象在一端插入,從另一端移除。隊(duì)列可以保存null值并且允許有重復(fù)的元素。常用方法如下:Enqueue方法:將指定元素插入列尾。Dequeue方法:隊(duì)列首元素出列。Queue<string>numbers=newQueue<string>();//字符串隊(duì)列numbers.Enqueue(“one”);//入列numbers.Enqueue("two");numbers.Enqueue("three");numbers.Enqueue("four");numbers.Enqueue("five");//Aqueuecanbeenumeratedwithoutdisturbingitscontents.foreach(stringnumberinnumbers
){Console.WriteLine(number);}Console.WriteLine("\nDequeuing'{0}'",numbers.Dequeue());//出列Console.WriteLine("Peekatnextitemtodequeue:{0}",numbers.Peek());//Peek返回位于Queue(OfT)開始處的對(duì)象但不將其移除。
Console.WriteLine("Dequeuing'{0}'",numbers.Dequeue());//出列6-堆棧Stack<T>泛型類表示同類型實(shí)例的大小可變的后進(jìn)先出(LIFO)集合。堆??梢员4鎛ull值并且允許有重復(fù)值。常用方法如下:Push方法:將指定元素插入棧頂。Pop方法:彈出棧頂元素。Stack<string>numbers=newStack<string>();numbers.Push("one");numbers.Push("two");numbers.Push("three");numbers.Push("four");numbers.Push("five");//Astackcanbeenumeratedwithoutdisturbingitscontents.foreach(stringnumberinnumbers){outputBlock.Text+=number+"\n";}outputBlock.Text+=String.Format("\nPopping'{0}'",numbers.Pop())+"\n";outputBlock.Text+=String.Format("Peekatnextitemtodestack:{0}",numbers.Peek())+"\n";////Peek返回位于開始處的對(duì)象但不將其移除。
outputBlock.Text+=String.Format("Popping'{0}'",numbers.Pop())+"\n";3.6日期與時(shí)間處理對(duì)日期和時(shí)間處理的常用類是DateTime類和TimeSpan類。DateTime類表示范圍在0001年1月1日午夜12:00:00到9999年12月31日晚上11:59:59之間的日期和時(shí)間,最小時(shí)間單位等于100納秒。TimeSpan類表示一個(gè)時(shí)間間隔。其范圍在Int64.MinValue到Int64.MaxValue之間。DateTime值類型與TimeSpan值類型的差異在于DateTime表示時(shí)間上的一刻,而TimeSpan表示時(shí)間間隔。例如:可以從DateTime的一個(gè)實(shí)例減去另一個(gè)實(shí)例來獲得它們之間的時(shí)間間隔也可以將正的TimeSpan加到當(dāng)前的DateTime來計(jì)算將來的日期??梢韵駾ateTime對(duì)象增加或減少一個(gè)時(shí)間間隔。時(shí)間間隔可為負(fù),也可為正,可以用刻度或秒等為單位表示,也可表示為TimeSpan對(duì)象。3.6日期與時(shí)間處理舉例【例3-10】DateTime類的用法舉例?!纠?-11】顯示當(dāng)前日期和時(shí)間?!纠坑?jì)時(shí)處理1延時(shí)10s
////停車后延時(shí)10s,再開始處理停車30Cm判斷l(xiāng)ongbeginTime=DateTime.Now.Ticks;//Ticks獲取表示此實(shí)例的日期和時(shí)間的計(jì)時(shí)周期數(shù),每個(gè)計(jì)時(shí)周期表示100ns,即一千萬分之一秒(1e-7s)。此屬性的值表示自0001年1月1日午夜12:00:00(表示DateTime..::.MinValue)以來經(jīng)過的以100納秒為間隔的間隔數(shù)。longendTime;while(true){endTime=DateTime.Now.Ticks;Thread.Sleep(0);if((endTime-beginTime)>10e7){break;}}result(tingChe_count,ht,"FT02",100);【例】計(jì)時(shí)處理2右轉(zhuǎn)前是否開了轉(zhuǎn)向燈
if
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家電維修合同協(xié)議書正規(guī)范本
- 垃圾桶項(xiàng)目采購合同
- 出租車租賃合同模板
- 2025居間合同協(xié)議書范本
- 產(chǎn)品全國總代理合同范本年
- 宣傳欄制作安裝合同書
- 委托合同范文年
- 2025年中圖版八年級(jí)歷史上冊(cè)階段測(cè)試試卷
- 2024年高考政治(安徽卷)真題詳細(xì)解讀及評(píng)析
- 2025電梯設(shè)備采購合同
- 飲料對(duì)人體的危害1
- 可轉(zhuǎn)換病區(qū)應(yīng)急預(yù)案與流程
- 數(shù)字經(jīng)濟(jì)學(xué)導(dǎo)論-全套課件
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫的對(duì)象(動(dòng)物防疫與檢疫技術(shù))
- 中考記敘文閱讀
- 《計(jì)算機(jī)應(yīng)用基礎(chǔ)》-Excel-考試復(fù)習(xí)題庫(含答案)
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末提升試題
- GB/T 7462-1994表面活性劑發(fā)泡力的測(cè)定改進(jìn)Ross-Miles法
- GB/T 2934-2007聯(lián)運(yùn)通用平托盤主要尺寸及公差
- GB/T 21709.13-2013針灸技術(shù)操作規(guī)范第13部分:芒針
評(píng)論
0/150
提交評(píng)論