第2章C程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第2章C程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第2章C程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第2章C程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第2章C程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

第2章

C#程序設(shè)計(jì)基礎(chǔ)

2.1標(biāo)識(shí)符2.2C#中數(shù)據(jù)類型2.3C#中的變量和常量2.4類型轉(zhuǎn)換

2.5結(jié)構(gòu)類型和枚舉類型2.6C#運(yùn)算符和表達(dá)式2.7C#中常用類和結(jié)構(gòu)2.1標(biāo)識(shí)符

C#的標(biāo)識(shí)符名稱必須遵守以下規(guī)則:(1)所有的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線這3類字符組成,且第一個(gè)字符必須為字母或下劃線。(2)標(biāo)識(shí)符中不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)算符等其他符號(hào)。(3)標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)。(4)標(biāo)識(shí)符不能與C#關(guān)鍵字名相同。(5)標(biāo)識(shí)符不能與C#中的類庫(kù)名相同。a12_c√1abc2.2C#中數(shù)據(jù)類型C#中數(shù)據(jù)類型分類值類型的變量?jī)?nèi)含變量值本身,C#的值類型可以分為簡(jiǎn)單類型、結(jié)構(gòu)類型和枚舉類型。2.2.1值類型1.整數(shù)類型類型標(biāo)識(shí)符說(shuō)明占用位數(shù)取值范圍示例sbyte帶符號(hào)字節(jié)型8-128~127sbytei=10;byte無(wú)符號(hào)字節(jié)型80~255bytei=10;short帶符號(hào)短整型16-32,768~32,767shorti=10;ushort無(wú)符號(hào)短整型160~65,535ushorti=10;int帶符號(hào)整型32-2,147,483,648~2,147,483,647inti=10;uint無(wú)符號(hào)整型320~4,294,967,295uinti=10;uinti=10U;long帶符號(hào)長(zhǎng)整型64-9,223,372,036,854,775,808~9,223,372,036,854,775,807longi=10;longi=10L;ulong無(wú)符號(hào)長(zhǎng)整型640~18,446,744,073,709,551,615ulong

i=16;ulong

i=16U;ulong

i=16L;ulong

i=16UL;2.實(shí)數(shù)類型類型標(biāo)識(shí)符說(shuō)明取值范圍示例float單精度浮點(diǎn)數(shù)±1.5×10-45

~2.4×1038,精度為7位數(shù)floatf=1.23F;double雙精度浮點(diǎn)數(shù)±5.0×10-324

~1.7×10308,精度為15到16位數(shù)doubled=1.23;decimal固定精度的浮點(diǎn)數(shù)1.0×10-28到~7.9×1028的之間,精度為28至29位有效數(shù)字decimald=1.23M;3字符類型

例如,可以采用如下方式字符變量賦值:

charc='H'; //字符Hcharc='\x0048'; //字符H,十六進(jìn)制轉(zhuǎn)義符(前綴為\x)

charc='\u0048'; //字符H,Unicode表示形式(前綴為\u)

charc=‘\r’; //回車(chē),轉(zhuǎn)義字符在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符數(shù)量必須且只能是一個(gè),而且不能是單引號(hào)或者反斜杠(\)。4.布爾類型布爾類型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類型的類型標(biāo)識(shí)符是bool。

注意:在C#語(yǔ)言中,bool類型不能像C++語(yǔ)言那樣可能直接轉(zhuǎn)換為int類型,例如,inta=(2<3);在C/C++中都是正確的,但在C#中不允許這樣,會(huì)出現(xiàn)“無(wú)法將類型bool隱式轉(zhuǎn)換為int”的編譯錯(cuò)誤。5.簡(jiǎn)單類型對(duì)應(yīng)的.NETFramework系統(tǒng)類型別名C#類型.NETFramework類型C#類型.NETFramework類型boolSystem.BooleanuintSystem.UInt32byteSystem.BytelongSystem.Int64sbyteSystem.SByteulongSystem.UInt64charSystem.CharobjectSystem.ObjectdecimalSystem.DecimalshortSystem.Int16doubleSystem.DoubleushortSystem.UInt16floatSystem.SinglestringSystem.StringintSystem.Int32

引用類型也稱為參考類型。和值類型相比,引用類型的變量不直接存儲(chǔ)所包含的值,而是指向它所要存儲(chǔ)的值。類似C中的指針。2.2.2引用類型1.object類

object是C#中所有類型(包括所有的值類型和引用類型)的基類,C#中的所有類型都直接或間接地從object類中繼承而來(lái)。因此,對(duì)一個(gè)object的變量可以賦予任何類型的值。

floatf=1.23;objectobj1; //定義obj1對(duì)象

obj1=f;objectobj2="China"; //定義obj2對(duì)象并賦初值C#還定義了一個(gè)string類,表示一個(gè)Unicode字符序列,專門(mén)用于對(duì)字符串的操作。

同樣,這個(gè)類也是在.NETFramework的命名空間System中定義的,是類System.String的別名。

2.string類字符串在實(shí)際中應(yīng)用非常廣泛,利用string類中封裝的各種內(nèi)部操作,可以很容易完成對(duì)字符串處理。例如:

stringstr1="123"+"abc";//"+"運(yùn)算符用于連接字符串

charc="HelloWorld!"[2];//"[]"運(yùn)算符可以訪問(wèn)string中的單個(gè)字符,c='e'stringstr2="China";stringstr3=@"China";//字符串的另一種表示形式,用@引起來(lái)。

boolb=(str2==str3); //"=="運(yùn)算符用于兩個(gè)字符串比較,b=true1.變量定義在C#程序里使用某個(gè)變量之前,必須要告訴編譯器它是一個(gè)什么樣的變量,因此要對(duì)變量進(jìn)行定義。定義變量的方法如下:

[訪問(wèn)修飾符]數(shù)據(jù)類型變量名[=初始值];2.3C#中的變量和常量2.3.1變量例如:

stringname="王華";intage=20;也可以同時(shí)聲明一個(gè)或多個(gè)給定類型的變量,例如:

inta=1,b=2,c=3;

定義一個(gè)變量,系統(tǒng)就會(huì)在內(nèi)存中開(kāi)辟相應(yīng)大小的空間來(lái)存放數(shù)據(jù)??梢詮南旅?個(gè)層面來(lái)理解變量。

變量名稱變量的值變量的數(shù)據(jù)類型變量的作用域2.3.2值類型變量和引用類型變量的區(qū)別程序的內(nèi)存空間分為??臻g和堆空間,值類型的數(shù)據(jù)在??臻g中分配,而引用類型數(shù)據(jù)(對(duì)象)在堆空間中分配。程序的執(zhí)行空間:??臻g堆空間1.棧空間和堆空間??臻g是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。??臻g用于存儲(chǔ)如下類型的數(shù)據(jù):某些類型變量的值。程序當(dāng)前的執(zhí)行環(huán)境。傳遞給方法的參數(shù)。進(jìn)棧和出棧操作堆空間是一塊內(nèi)存空間,在堆空間中可以分配大塊的內(nèi)存以存儲(chǔ)某類型的數(shù)據(jù)對(duì)象。

與棧不同,堆里的空間能夠以任意順序存入和移除。如圖2.5所示表示一個(gè)程序在一個(gè)堆里存放了3個(gè)數(shù)據(jù)。2.理解值類型的變量C#中的值類型變量和C/C++語(yǔ)言中的普通變量(非指針變量)相似,這類變量直接包含它們的值。所有的值類型均隱式派生自

System.ValueType。C#中在內(nèi)存的棧空間中為值類型變量分配空間,而且沒(méi)有單獨(dú)的堆分配或垃圾回收開(kāi)銷。因此值類型變量會(huì)隨著方法調(diào)用后??臻g的消亡而自動(dòng)清除(C#中的值類型變量像C/C++語(yǔ)言中函數(shù)內(nèi)的局部變量,函數(shù)執(zhí)行完后由系統(tǒng)釋放其存儲(chǔ)空間)。例如:intx;inty=2;x=y;在C/C++語(yǔ)言中可以定義指針變量,例如:

char*p;其中,p是一個(gè)指針變量,其中存放某個(gè)字符變量的地址,注意變量p和它所指向的字符變量是兩個(gè)不同的東西。在C#中沒(méi)有指針,而改為引用,引用表示某個(gè)對(duì)象的地址而不是變量或?qū)ο蟊旧怼?.理解引用類型的變量在C#中,無(wú)論值類型變量還是引用類型變量,都是在??臻g中分配對(duì)應(yīng)的存儲(chǔ)空間,所不同的是,引用類型變量所指向的對(duì)象是在托管堆上分配內(nèi)存空間的,為什么這樣呢?

voidfun()

{ char*p; //定義指針變量p inti; //定義整型變量i p=(char*)malloc(11*sizeof(char));

//為p分配11個(gè)字符的空間

for(i=0;i<10;i++) //為10個(gè)字符單元分別賦值'a'~'j'

*(p+i)='a'+i;*(p+i)=’\0’; printf("%s\n",p); //輸出:abcdefghij

}先看一個(gè)簡(jiǎn)單的C/C++語(yǔ)言函數(shù):函數(shù)執(zhí)行后p所指向的空間沒(méi)有釋放

.NETFramework改進(jìn)了這一點(diǎn):將C#應(yīng)用程序的執(zhí)行置于CLR的監(jiān)控之下,而且所有引用類型變量所指向的對(duì)象(其生命周期是全局性的)都在托管堆上分配空間,程序執(zhí)行完畢,由CLR將堆空間全部回收,這樣就不會(huì)出現(xiàn)像前面C/C++程序出現(xiàn)的內(nèi)存泄漏問(wèn)題了。所以在C#中,當(dāng)定義一個(gè)引用類型變量時(shí),系統(tǒng)在??臻g中為該引用變量分配存儲(chǔ)空間,要想創(chuàng)建對(duì)象并把對(duì)象的存儲(chǔ)地址賦給該變量,就需要使用new操作符。例如:

MyClassvar; //MyClass是已定義的類或類型

var=newMyClass(); //創(chuàng)建var引用的實(shí)例

,new

引用類型變量及其所指實(shí)例下面以數(shù)組引用類型變量為例進(jìn)一步說(shuō)明引用類型變量和值變量的區(qū)別:int[]a=newint[3]{1,2,3}; //定義一個(gè)數(shù)組afor(inti=0;i<3;i++) //輸出數(shù)組a的所有元素 Console.Write("{0}",a[i]);Console.WriteLine();int[]b=a; //定義數(shù)組b并賦值為afor(inti=0;i<3;i++) //修改數(shù)組b的元素

b[i]*=2;for(inti=0;i<3;i++) //再次輸出數(shù)組a的所有元素 Console.Write("{0}",a[i]);Console.WriteLine();引用型變量的復(fù)制:int[]b=a;1.直接常量直接常量是指把程序中不變的量直接硬編碼為數(shù)值或字符串值,例如,以下都是直接常量:

100 //整型直接常量

1.23e5 //浮點(diǎn)型直接常量2.2.3常量2.符號(hào)常量符號(hào)常量是通過(guò)關(guān)鍵字const聲明的常量,包括常量的名稱和它的值。常量聲明的格式如下:

const數(shù)據(jù)類型常量名=初始值;

其中,“常量名”必須是C#的合法標(biāo)識(shí)符,在程序中通過(guò)常量名來(lái)訪問(wèn)該常量?!邦愋蜆?biāo)識(shí)符”指示了所定義的常量的數(shù)據(jù)類型,而“初始值”是所定義的常量的值。例如:

constdoublePI=2.14159265;2.4類型轉(zhuǎn)換值類型之間的轉(zhuǎn)換有隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。另外裝箱和拆箱也屬于一種類型轉(zhuǎn)換。隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。源類型目標(biāo)類型sbyteshort、int、long、float、double、decimalbyteshort、ushort、int、uint、long、ulong、float、double、decimalshortint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimalintlong、float、double、decimaluintlong、ulong、float、double、decimallongfloat、double、decimalulongfloat、double、decimalcharushort、int、uint、long、ulong、float、double、decimalfloatdouble2.4.1隱式轉(zhuǎn)換顯式轉(zhuǎn)換又叫強(qiáng)制類型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換需要用戶明確地指定轉(zhuǎn)換類型,一般在不存在該類型的隱式轉(zhuǎn)換時(shí)才使用。格式如下:

(類型標(biāo)識(shí)符)表達(dá)式

其作用是將“表達(dá)式”值的類型轉(zhuǎn)換為“類型標(biāo)識(shí)符”的類型。例如:

(int)1.23//把double類型的1.23轉(zhuǎn)換成int類型,結(jié)果為1

2.4.2顯式轉(zhuǎn)換

需要提醒注意以下幾點(diǎn):

(1)顯式轉(zhuǎn)換可能會(huì)導(dǎo)致錯(cuò)誤。進(jìn)行這種轉(zhuǎn)換時(shí)編譯器將對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè)。如果有溢出說(shuō)明轉(zhuǎn)換失敗,就表明源類型不是一個(gè)合法的目標(biāo)類型,轉(zhuǎn)換就無(wú)法進(jìn)行。

(2)對(duì)于從float、double、decimal到整型數(shù)據(jù)的轉(zhuǎn)換,將通過(guò)舍入得到最接近的整型值,如果這個(gè)整型值超出目標(biāo)類型的范圍,則出現(xiàn)轉(zhuǎn)換異常?!纠?.1】

設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明類型轉(zhuǎn)換的應(yīng)用。usingSystem;namespaceproj2_1{classProgram{staticvoidMain(string[]args){inti=65,i1,i2; doubled=66.3456,d1,d2; charc='A',c1,c2; Console.WriteLine("i={0:d5},d={1:f},c={2}",i,d,c); i1=(int)d; //強(qiáng)制類型轉(zhuǎn)換

d1=i;

//隱式類型轉(zhuǎn)換

c1=(char)i;

//強(qiáng)制類型轉(zhuǎn)換

Console.WriteLine("i1={0:d5},d1={1:f},c1={2}",i1,d1,c1); i2=c; //隱式類型轉(zhuǎn)換

d2=(int)d; //強(qiáng)制類型轉(zhuǎn)換,轉(zhuǎn)換成整數(shù)后再隱式轉(zhuǎn)為double類型

c2=(char)d; //強(qiáng)制類型轉(zhuǎn)換

Console.WriteLine("i2={0:d5},d2={1:f},c2={2}",i2,d2,c2);}}}1.裝箱轉(zhuǎn)換

裝箱轉(zhuǎn)換是指將一個(gè)值類型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)對(duì)象類型的數(shù)據(jù)。例如,下面語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換:

inti=10;

objectobj=i;

裝箱轉(zhuǎn)換過(guò)程2.4.3裝箱和拆箱2.拆箱轉(zhuǎn)換拆箱轉(zhuǎn)換是指將一個(gè)引用類型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個(gè)值類型數(shù)據(jù)。拆箱操作分為兩步:首先檢查對(duì)象實(shí)例,確保它是給定值類型的一個(gè)裝箱值,然后把實(shí)例的值復(fù)制到值類型數(shù)據(jù)中。例如,下面兩條語(yǔ)句就執(zhí)行了拆箱轉(zhuǎn)換:

objectobj=10;

inti=(int)obj; //拆箱折箱轉(zhuǎn)換過(guò)程1.結(jié)構(gòu)類型的聲明結(jié)構(gòu)類型由若干“成員”組成的。數(shù)據(jù)成員稱為字段,每個(gè)字段都有自已的數(shù)據(jù)類型。聲明結(jié)構(gòu)類型的一般格式如下:

struct結(jié)構(gòu)類型名稱

{ [字段訪問(wèn)修飾符]數(shù)據(jù)類型字段1; [字段訪問(wèn)修飾符]數(shù)據(jù)類型字段2; ... [字段訪問(wèn)修飾符]數(shù)據(jù)類型字段n;

};2.5結(jié)構(gòu)類型和枚舉類型2.5.1結(jié)構(gòu)類型例如,以下聲明一個(gè)具有姓名和年齡的結(jié)構(gòu)體類型Student:structStudent //聲明結(jié)構(gòu)類型Student{publicintxh; //學(xué)號(hào)

publicstringxm; //姓名

publicstringxb; //性別

publicintnl; //年齡

publicstringbh; //班號(hào)};2.結(jié)構(gòu)類型變量的定義聲明一個(gè)結(jié)構(gòu)類型后,可以定義該結(jié)構(gòu)類型的變量(簡(jiǎn)稱為結(jié)構(gòu)變量)。定義結(jié)構(gòu)變量的一般格式如下:

結(jié)構(gòu)類型結(jié)構(gòu)變量;

例如,在前面的結(jié)構(gòu)類型Student聲明后,定義它的兩個(gè)變量如下:

Students1,s2;3.結(jié)構(gòu)變量的使用1)訪問(wèn)結(jié)構(gòu)變量字段訪問(wèn)結(jié)構(gòu)變量字段的一般格式如下:

結(jié)構(gòu)變量名.字段名例如,s1.xh表示結(jié)構(gòu)變量s1的學(xué)號(hào),s2.xm表示結(jié)構(gòu)變量s2的姓名。結(jié)構(gòu)體變量的字段可以在程序中單獨(dú)使用,與普通變量完全相同。2)結(jié)構(gòu)變量的賦值結(jié)構(gòu)變量的賦值有兩種方式。結(jié)構(gòu)變量的字段賦值:使用方法與普通變量相同。結(jié)構(gòu)變量之間賦值:要求賦值的兩個(gè)結(jié)構(gòu)變量必須類型相同。例如:

s1=s2;這樣s2的所有字段值賦給s1的對(duì)應(yīng)字段?!纠?.2】

設(shè)計(jì)一個(gè)控制臺(tái)程序說(shuō)明結(jié)構(gòu)類型的應(yīng)用。usingSystem;namespaceproj2_2{classProgram{structStudent//結(jié)構(gòu)類型聲明應(yīng)放在Main函數(shù)的外面

{ publicintxh; //學(xué)號(hào)

publicstringxm;//姓名

publicstringxb; //性別

publicintnl; //年齡

publicstringbh; //班號(hào)

}staticvoidMain(string[]args){Students1,s2; //定義兩個(gè)結(jié)構(gòu)類型變量

s1.xh=101; s1.xm="李明"; s1.xb="男"; s1.nl=20; s1.bh="07001"; Console.WriteLine("學(xué)號(hào):{0},姓名:{1},性別:{2},年齡:{3},

班號(hào):{4}",s1.xh,s1.xm,s1.xb,s1.nl,s1.bh); s2=s1; //將結(jié)構(gòu)變量s1賦給s2 s2.xh=108; s2.xm="王華"; Console.WriteLine("學(xué)號(hào):{0},姓名:{1},性別:{2},年齡:{3},

班號(hào):{4}",s2.xh,s2.xm,s2.xb,s2.nl,s2.bh); Console.WriteLine("學(xué)號(hào):{0},姓名:{1},性別:{2},年齡:{3},

班號(hào):{4}",s1.xh,s1.xm,s1.xb,s1.nl,s1.bh);

}}}在執(zhí)行s2=s1并修改s2后,s1沒(méi)有改變,說(shuō)明s1、s2存儲(chǔ)在不同的位置。枚舉類型也是一種自定義數(shù)據(jù)類型,它允許用符號(hào)代表數(shù)據(jù)。枚舉是指程序中某個(gè)變量具有一組確定的值,通過(guò)“枚舉”可以將其值一一列出來(lái)。1.枚舉類型的聲明枚舉類型使用enum關(guān)鍵字聲明,其一般語(yǔ)法形式如下:

enum枚舉名{枚舉成員1,枚舉成員2,}其中,enum是結(jié)構(gòu)類型的關(guān)鍵字。2.5.2枚舉類型例如,以下聲明一個(gè)名稱為color的表示顏色的枚舉類型:

enumColor{Red,Green,Blue,White,Black}

在聲明枚舉類型后,可以通過(guò)枚舉名來(lái)訪問(wèn)枚舉成員,其使用語(yǔ)法如下:

枚舉名.枚舉成員2.枚舉成員的賦值在聲明的枚舉類型中,每一個(gè)枚舉成員都有一個(gè)相對(duì)應(yīng)的常量值,默認(rèn)情況下C#規(guī)定第1個(gè)枚舉成員的值取0,它后面的每一個(gè)枚舉成員的值按加1遞增。例如,前面Color中,Red值為0,Green值為1,Blue值為2,依次類推??梢詾橐粋€(gè)或多個(gè)枚舉成員賦整型值,當(dāng)某個(gè)枚舉成員賦值后,其后的枚舉成員沒(méi)有賦值的話,自動(dòng)在前一個(gè)枚舉成員值之上加1作為其值。例如:

enumColor{Red=0,Green,Blue=3,White,Black=1};則這些枚舉成員的值分別為0、1、3、4、1。3.枚舉類型變量的定義聲明一個(gè)枚舉類型后,可以定義該枚舉類型的變量(簡(jiǎn)稱為枚舉變量)。定義枚舉變量的一般格式如下:

枚舉類型枚舉變量;

例如,在前面的枚舉類型Color聲明后,定義它的兩個(gè)變量如下:

Colorc1,c2;1)枚舉變量的賦值枚舉變量賦值的語(yǔ)法格式如下:

枚舉變量=枚舉名.枚舉成員例如:

c1=Color.Red;2)枚舉變量的訪問(wèn)枚舉變量像普通變量一樣直接訪問(wèn)。4.枚舉變量的使用2.6C#運(yùn)算符和表達(dá)式2.6.1算術(shù)運(yùn)算符符號(hào)意義示例+加法運(yùn)算a+b?減法/取負(fù)運(yùn)算a?b*乘法運(yùn)算a*b/除法運(yùn)算a/b%取余數(shù)a%b++累加a++??遞減a?

?字符串運(yùn)算符只有一個(gè),就是加號(hào)(+)。它除了作為算術(shù)運(yùn)算符之外,還可以將字符串連接起來(lái),變成合并的新字符串。例如:

strings="Hello";s=s+",World.";Console.WriteLine(s);//輸出:Hello,World.2.6.2字符串運(yùn)算符賦值運(yùn)算符(=)用于改變變量的值,它先求出右側(cè)表達(dá)式的結(jié)果,然后再將結(jié)果賦給左側(cè)的變量。符號(hào)意義示例+=加賦值a+=b等價(jià)于a=a+b-=減賦值a-=b等價(jià)于a=a-b*=乘賦值a*=b等價(jià)于a=a*b/=除賦值a/=b等價(jià)于a=a/b%=取模賦值a%=b等價(jià)于a=a%b<<=左移賦值a<<=b等價(jià)于a=a<<b>>=右移賦值a>>=b等價(jià)于a=a>>b&=與賦值a&=b等價(jià)于a=a&b^=異或賦值a^=b等價(jià)于a=a^b|=或賦值a|=b等價(jià)于a=a|b2.6.3賦值運(yùn)算符2.6.4關(guān)系運(yùn)算符符號(hào)意義示例<小于2<3為true<=小于等于2<=3為true>大于2>3為false>=大于等于2>=3為false==等于2==3為false!=不等于2!=3為true2.6.5邏輯運(yùn)算符符號(hào)意義示例!邏輯非!(2<3)為false&&邏輯與(3<5)&&(5>4)為true||邏輯或(3<5)||(5>4)為true2.6.6位運(yùn)算符符號(hào)意義示例~按位求反!2<<左移8<<2>>右移8>>2&按位與8&5^按位異或8^5|按位或8|5條件運(yùn)算符是一個(gè)三元運(yùn)算符,每個(gè)操作數(shù)同時(shí)又是表達(dá)式的值。由條件運(yùn)算符構(gòu)成的表達(dá)式稱為條件表達(dá)式。條件運(yùn)算符的使用格式如下:

表達(dá)式1?表達(dá)式2:表達(dá)式3例如,以下表達(dá)式返回a和b中的最大值:

max=a>b?a:b計(jì)算過(guò)程是,當(dāng)a>b,max=a;否則max=b。2.6.7條件運(yùn)算符2.6.8其他運(yùn)算符1.sizeof運(yùn)算符

sizeof運(yùn)算符求值類型數(shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)。sizeof運(yùn)算符的語(yǔ)法格式如下:

sizeof(類型標(biāo)識(shí)符)其結(jié)果為一個(gè)整數(shù),表示指定類型的數(shù)據(jù)在內(nèi)存分配的字節(jié)數(shù)。該運(yùn)算符只能作用于值類型或值類型變量。2.typeof運(yùn)算符該運(yùn)算符用于獲得指定數(shù)據(jù)類型的說(shuō)明。例如,若聲明了結(jié)構(gòu)Student,則以下語(yǔ)句輸出聲明Student結(jié)構(gòu)類型的程序名等。

Console.WriteLine(typeof(Student));輸出:prog2_2.Program+Student3.new運(yùn)算符該運(yùn)算符用于創(chuàng)建一個(gè)類的對(duì)象。4.checked和Uncheckedchecked

關(guān)鍵字用于對(duì)整型算術(shù)運(yùn)算和轉(zhuǎn)換顯式啟用溢出檢查。unchecked

關(guān)鍵字用于取消整型算術(shù)運(yùn)算和轉(zhuǎn)換的溢出檢查。運(yùn)算符的優(yōu)先級(jí)是指在表達(dá)式中哪一個(gè)運(yùn)算符應(yīng)該首先計(jì)算。

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)行。2.6.9運(yùn)算符的優(yōu)先級(jí)2.7C#中常用類和結(jié)構(gòu)C#中一切都是對(duì)象。2.7.1String類屬性說(shuō)明Chars獲取此字符串中位于指定字符位置的字符。Length獲取此字符串中的字符數(shù)。string類型是.NETFramework中的String類的別名。string類型定義了相等運(yùn)算符(==和!=)用于比較兩個(gè)string對(duì)象,另外,+運(yùn)算符用于連接字符串,[]運(yùn)算符可以用來(lái)訪問(wèn)string中的各個(gè)字符。方法說(shuō)明Compare靜態(tài)方法。比較兩個(gè)指定的String對(duì)象CompareTo

非靜態(tài)方法。將此字符串與指定的對(duì)象或String進(jìn)行比較,并返回兩者相對(duì)值的指示Concat

靜態(tài)方法。連接String的一個(gè)或多個(gè)字符串Contains非靜態(tài)方法。返回一個(gè)值,該值指示指定的String對(duì)象是否出現(xiàn)在此字符串中Equals非靜態(tài)方法。確定兩個(gè)String對(duì)象是否具有相同的值Format靜態(tài)方法。將指定的String中的每個(gè)格式項(xiàng)替換為相應(yīng)對(duì)象的值的文本等效項(xiàng)IndexOf非靜態(tài)方法。返回String或一個(gè)或多個(gè)字符在此字符串中的第一個(gè)匹配項(xiàng)的索引Insert非靜態(tài)方法。在該String中的指定索引位置插入一個(gè)指定的StringRemove非靜態(tài)方法。從該String中刪除指定個(gè)數(shù)的字符Replace非靜態(tài)方法。將該String中的指定String的所有匹配項(xiàng)替換為其他指定的StringSplit非靜態(tài)方法。返回包含該String中的子字符串(由指定Char或String數(shù)組的元素分隔)的String數(shù)組Substring非靜態(tài)方法。從此字符串中檢索子字符串ToLower非靜態(tài)方法。返回該String轉(zhuǎn)換為小寫(xiě)形式的副本ToUpper非靜態(tài)方法。返回該String轉(zhuǎn)換為大寫(xiě)形式的副本Trim非靜態(tài)方法。從此字符串的開(kāi)始位置和末尾移除一組指定字符的所有匹配項(xiàng)【例2.7】

設(shè)計(jì)一個(gè)控制臺(tái)程序求用戶輸入的子串在主串中位置。usingSystem;namespaceProj3_6{classProgram{staticvoidMain(string[]args){ Stringmstr,sstr; Console.Write("輸入主串:"); mstr=Console.ReadLine(); Console.Write("輸入子串:"); sstr=Console.ReadLine(); Console.WriteLine("主串長(zhǎng)度={0},子串長(zhǎng)度={1}",mstr.Length,sstr.Length); if(String.Compare(mstr,sstr)!=0)

//使用靜態(tài)方法

Console.WriteLine("位置:{0}",mstr.IndexOf(sstr)); elseConsole.WriteLine("兩個(gè)字符串相同");}}}Math類位于System命名空間中,它包含了實(shí)現(xiàn)C#中常用算術(shù)運(yùn)算功能的方法,這些方法都是靜態(tài)方法,可通過(guò)“Math.方法名(參數(shù))”來(lái)使用。2.7.2Math類

Convert類位于System命名空間中,用于將一個(gè)值類型轉(zhuǎn)換成另一個(gè)值類型。這些方法都是靜態(tài)方法,可通過(guò)“Convert.方法名(參數(shù))”來(lái)使用。方法說(shuō)明ToBoolean將數(shù)據(jù)轉(zhuǎn)換成Boolean類型ToDataTime將數(shù)據(jù)轉(zhuǎn)換成日期時(shí)間類型ToInt16將數(shù)據(jù)轉(zhuǎn)換成16位整數(shù)類型ToInt32將數(shù)據(jù)轉(zhuǎn)換成32位整數(shù)類型ToInt64將數(shù)據(jù)轉(zhuǎn)換成64位整數(shù)類型ToNumber將數(shù)據(jù)轉(zhuǎn)換成Double類型ToObject將數(shù)據(jù)轉(zhuǎn)換成Object類型ToString將數(shù)據(jù)轉(zhuǎn)換成string類型2.7.3Convert類

DateTime結(jié)構(gòu)類位于System命名空間中,DateTime值類型表示值范圍在公元0001年1月1日午夜12:00:00到公元9999年12月31日晚上11:59:59之間的日期和時(shí)間??梢酝ㄟ^(guò)以下語(yǔ)法格式定義一個(gè)日期時(shí)間變量:

DateTime日期時(shí)間變量=newDateTime(年,月,日,時(shí),分,秒);例如,以下語(yǔ)句定義了2個(gè)日期時(shí)間變量:

DateTimed1=newDateTime(2009,10,1);

DateTimed2=newDateTime(2009,10,1,8,15,20);

其中,d1的值為2009年10月1日零點(diǎn)零分零秒,d2的值為2009年10月1日8點(diǎn)15分20秒。2.7.4DateTime結(jié)構(gòu)屬性說(shuō)明Date獲取此實(shí)例的日期部分Day獲取此實(shí)例所表示的日期為該月中的第幾天DayOfWeek

獲取此實(shí)例所表示的日期是星期幾DayOfYear獲取此實(shí)例所表示的日期是該年中的第幾天Hour獲取此實(shí)例所表示日期的小時(shí)部分Millisecond獲取此實(shí)例所

溫馨提示

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