版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
W3SchoolC#&C#CAndersHejlsberg.NetC#是專為公共語言基礎(chǔ)結(jié)構(gòu)(CLI)設(shè)計的。CLI由可執(zhí)行代碼和運行時環(huán)境組成,允許在不同的計算機(jī)平臺和體系結(jié)構(gòu)#C##布爾條件(Boolean自動回收(AutomaticGarbageCollection)標(biāo)準(zhǔn)庫(StandardLibrary)組件版本(AssemblyVersioning)委托(Delegates)和管理(EventsManagement)條件編譯(ConditionalCompilation)LINQ和Lambda表達(dá)式C#序。因此,在討論運行C#程序的可用工具之前,讓我們先了解一下C#與.Net框架之間的關(guān)系。.Net框架(.NetWeb應(yīng)用程序Web服務(wù).Net框架應(yīng)用程序是多平臺的應(yīng)用程序??蚣艿脑O(shè)計方式使它適用于下列各種語言:C#、C++、VisualBasic、Jscript、COBOL等等。所有這些語言可以框架,彼此之間也可以互相交互。#公共語言運行庫(CommonLanguageRuntime.Net框架類庫(.NetFrameworkClassLibrary)公共語言規(guī)范(CommonLanguageSpecification)通用類型系統(tǒng)(CommonTypeSystem)Windows窗體(WindowsForms)ASP.Net和ASP.NetAJAXWindows工作流基礎(chǔ)(WindowsWorkflowFoundation-WF)Windows顯示基礎(chǔ)(WindowsPresentationFoundation)Windows通信基礎(chǔ)(WindowsCommunicationFoundationWCF)C#的集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment-VisualStudio2010VisualC#2010ExpressVisualWeb后面兩個是免費使用的,可從微軟。使用這些工具,您可以編寫各種C#程序,從簡單令行應(yīng)用程序到更復(fù)雜的應(yīng)用程序。您也可以使用基本的文本編輯器(Notepad)C#源代碼文件,并使用命令行編譯器(.NETVisualC#ExpressVisualWebDeveloperExpressVisualStudio的定制版本,且具有相同的外觀和感觀。它們保留VisualStudio的大部分功能。在本中,我們使用的是VisualC#2010Express。您可以從VisualStudio上進(jìn)行。它會自動安裝在您的機(jī)器上。請注意,您需要一個可用的網(wǎng)絡(luò)連接來完成LinuxMacOSC#.NETWindows操作系統(tǒng)上,但是也有一些運行于其它操作系統(tǒng)上的版本可供選擇。Mono.NETC#LinuxMacOS。如需了解詳情,請GoMono。Mono.NETLinux開發(fā)者提供了更好的開發(fā)工具。Mono可運行在多種操作系統(tǒng)上,包括Android、BSD、iOS、Linux、OSX、Windows、Solaris和UNIX。C###C#oWorld實命名空間(Namespacedeclaration)一個classClassClass語句(Statements)&表達(dá)式(Expressions)usingusing{{staticvoidMain(string[]{/*我的第一個C#程序*/ oWorld");}}}oo下一行是class。類oWorld包含了程序使用的數(shù)據(jù)和方法。類一般包含多個方法。方法定義了類的行為。在這里,oWorld類只有一個Main方法。下一行/*...*/將會被編譯器忽略,且它會在程序中添加額外的注釋。Studio.NET啟動時屏幕會快速運行并關(guān)閉。&C##FileNewProject選擇ConsoleApplication。新項目會出現(xiàn)在解決方案資源管理器(SolutionExplorer)中。在代碼編輯器(CodeEditor)中編寫代碼。點擊Run按鈕或者按下F5鍵來運行程序。會出現(xiàn)一個命令提示符窗口(CommandPromptwindow),顯示oVisualStudioIDEC保存文件為oworld.cs。 如果代碼沒有錯誤,命令提示符會進(jìn)入下一行,并生成oworld.exe可執(zhí)行文件。接下來,鍵入oworld來執(zhí)行程序。C#C#是一種面向?qū)ο蟮木幊陶Z言。在面向?qū)ο蟮某绦蛟O(shè)計方法中,程序由各種相互交互的對象組成。相同種類的對象通常具有相同的類型,或者說,是在相同的class中。Rectangle(矩形)lengthwidth屬性。根據(jù)設(shè)計,它可能需要接受這些屬性值、計算面積#usingusingnamespace{class{//成員變量doublewidth;publicvoid{length=width=}publicdouble{returnlength*}publicvoid { ine("Length:{0}",length); ine("Width:{0}",width); }}class{staticvoidMain(string[]{Rectangler=newRectangle();}}}Length:Length:Width:Area:usingusingusingclassC#/*/*ThisprogramThebasicsyntaxofC#programmingLanguage*/}//end}//endclass GetArea和Disy()標(biāo)識符必須以字母開頭,后面可以跟一系列的字母、數(shù)字(09)或下劃線(_)。標(biāo)識符中的第一個字符不能是@^&*。但是,可以使用下劃線(C#C#編譯器預(yù)定義的保留字。這些關(guān)鍵字不能用作標(biāo)識符,但是,如果您想使用這些關(guān)鍵字作為標(biāo)識符,可以在關(guān)鍵字前面加上@字符作為前綴。下表列出了C#中的保留關(guān)鍵字()和上下文關(guān)鍵字 C#C中,變量分為以下幾種類型:值類型(Valuetypes)指針類型(Pointertypes)值類型(Value值類型直接包含數(shù)據(jù)。比如int、char、float,它們分別數(shù)字、字母、浮點數(shù)。當(dāng)您一個int類型時,系統(tǒng)分配00 U(-7.9x10287.9x1028100(+/-)5.0x10-324(+/-)1.7x-3.4x10383.4x000000000namespacenamespace{class{staticvoidMain(string[]{Console.Wriine("Sizeofint:{0}",sizeof(int));}}}SizeSizeofint:類型(Reference變量改變的,其他變量會自動反映這種值的變化。內(nèi)置的類型有:object、dynamic和string。對象(Object)對象(Object)類型是C#通用類型系統(tǒng)(CommonTypeSystem-CTS)中所有數(shù)據(jù)類型的終極基類。Object是System.Object類的別名。所以對象(Object)類型可以被分配任何其他類型(值類型、類型、預(yù)定義類型或用戶自objectobjectobj100;動態(tài)(Dynamic)dynamicdynamic<variable_name>=dynamicdynamicd=字符串(String)字符串(String)(String)System.StringStringStringstr=#stringstringstr=stringstringstr=stringstringstr=@"<script指針類型(Pointertype*指針類型變量另一種類型的內(nèi)存地址。C#中的指針與C或C++中的指針有相同的功能。type*int*iptr;C##隱式類型轉(zhuǎn)換C#默認(rèn)的以安全方式進(jìn)行的轉(zhuǎn)換。例如,從小的整數(shù)類型轉(zhuǎn)換為大的整數(shù)類型,從派-namespacenamespace{class{staticvoidMain(string[]{doubled=5673.74;inti;doubleinti=(int)d; }}}}C##123456789namespacenamespace{class{staticvoidMain(string[]{inti=floatf=53.005f;doubled=2345.7652;boolb=true;Console.Wriine(i.ToString());Console.Wriine(f.ToString());Console.Wriine(d.ToString());Console.Wriine(b.ToString());}}}C#一個變量只不過是一個供程序操作的區(qū)的名字。在C#中,每個變量都有一個特定的類型,類型決定了變量的內(nèi)存大#C#允許定義其他值類型的變量,比如enum,也允許定義類型變量,比如class。這些在以后的章節(jié)中進(jìn)行C#<data_type><data_type>#inti,j,k;charc,ch;inti,j,k;charc,ch;doubled;intinti=C#variable_namevariable_name=<data_type><data_type><variable_name>=intd=3,f=5; /*intd=3,f=5; /*初始化d和f.*/bytez=22; /*初始化z.*/doublepi=3.14159;/* pi的近似值*/charx /*變量x的值為'x'namespacenamespace{class{staticvoidMain(string[]{shorta;intb;/*a=b=c=a+ ine("a={0},b={1},c={2}",a,b,c);}}}aa=10,b=20,c=intintnum=()CLvaluesintintg=1010=C#整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制的常量。前綴指定基數(shù):0x0X表示十六進(jìn)制,0表示八進(jìn)制,沒有前綴則UL的組合,其中,ULunsignedlong。后綴可以是大寫或者小寫,/*合法/*合法/*合法 :8
/*十進(jìn)制/*八進(jìn)制/*十六進(jìn)制/*int/*int/*long/*無符號long/*合法/*合法 時包含兩者。有符號的指數(shù)是用e或E表示的。C#中有一些特定的字符,當(dāng)它們的前面帶有反斜杠時有特殊的意義,可用于表示換行符(\n)tab(\t)。在Alert\spacenamespace{class{staticvoidMain(string[]{ }}} @""里。字符串常量包含的字符與字符常量相似,可以是:普通字符、轉(zhuǎn)義序"""o,o,""d"oconstconst<data_type><constant_name>=usingusingnamespace{class{staticvoidMain(string[]{constdoublepi3.14159;double ine("EnterRadius:doubleareaCircle=pi*r*r; ine("Radius:{0},Area:{1}",r,areaCircle);}}}EnterEnter3Radius:3,Area:C#運算符是一種告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號。C#有豐富的內(nèi)置運算符,分類如下:+-*/%#usingusingnamespace{class{staticvoidMain(string[]{inta=21;intb=10;intc;c=a+Console.Wriine("Line1-c的值是{0}",c);c=a-b;Console.Wriine("Line2-c的值是{0}",c);c=a*b;Console.Wriine("Line3-c的值是{0}",c);c=a/b;Console.Wriine("Line4-c的值是{0}",c);c=a%b;Console.Wriine("Line5-c的值是{0}",c);c=a++;Console.Wriine("Line6-c的值是{0}",c);c=a--;Console.Wriine("Line7-c的值是{0}",c);}}}Line1c的值是Line2c的值是Line3c的值是Line4c的值是Line5c的值是Line6c的值是Line7c的值是(AB(AB>(AB<(AB(AB(AB#usingusingclass{staticvoidMain(string[]{inta=21;intb=if(a=={}{}
Console.Wriine("Line1-a等于Console.Wriine("Line1-a不等于if(a<{}{}
Console.Wriine("Line2-a小于Console.Wriine("Line2-a不小于if(a>{}{}
Console.Wriine("Line3-a大于Console.Wriine("Line3-a不大于/*改變a和b的值a=b=if(a<={Console.Wriine("Line4-a小于或等于}if(b>={Console.Wriine("Line5-b大于或等于}}}Line1abLine2abLine3-a大于bLine4abLine5b大于或等于# (A&&B(A||B!!(A&&B#usingSystem;{class{staticvoidMain(string[]{boola=true;boolb=if(a&&{Console.Wriine("Line1-條件為真}if(a||{Console.Wriine("Line2-條件為真}/*改變a和b的值a=b=true;if(a&&b){}{}
Console.Wriine("Line3-條件為真Console.Wriine("Line3-條件不為真if(!(a&&{Console.Wriine("Line4-條件為真}}}}Line1-Line1-條件為真Line2-條件為真Line3條件不為真Line4-條件為真pqp&p|p^00000010111111010011A=0011B=0000A&B=0000A|B=0011A^B=0011~A=1100&|^~(~A)將得到-61,即為1100#usingSystem;usingSystem;{class{staticvoidMain(string[]{inta= /*60=00111100intb=13; /*13=00001101*/intc=0;c=a&b; /*12=00001100*/Console.Wriine("Line1-c的值是{0}",c);c=a|b; /*61=00111101*/Console.Wriine("Line2-c的值是{0}",c);c=a^b; /*49=00110001*/Console.Wriine("Line3-c的值是{0}",c);c=~a; /*-61=11000011*/Console.Wriine("Line4-c的值是{0}",c);c=a<< /*240=11110000Console.Wriine("Line5-c的值是{0}",c=a>> /*15=00001111Console.Wriine("Line6-c的值是{0}",c);}}}Line1c的值是Line2c的值是Line3c的值是Line4c的值是-Line5c的值是Line6c的值是=CABABCCACCCACCC*ACC*CACCCACCC2CCC2CCC&2CC&C^=2CC^C|=2CC|#usingSystem;{class{staticvoidMain(string[]{inta=21;intc;c=Console.Wriine("Line1-=c的值={0}",c+=Console.Wriine("Line2-+=c的值={0}",c-=Console.Wriine("Line3--=c的值={0}",c*=Console.Wriine("Line4-*=c的值={0}",c/=Console.Wriine("Line5-/=c的值={0}",c=c%=Console.Wriine("Line6-%=c的值={0}",c<<=Console.Wriine("Line7-<<=c的值={0}",c>>=Console.Wriine("Line8->>=c的值={0}",c&=Console.Wriine("Line9-&=c的值={0}",c);c^=2; ine("Line10^=c0}c);c|=2;Console.Wriine("Line11-|=c的值={0}",c);}}}Line1-= c的值=21Line2-+= c的值=42Line3--= c的值=21Line4-*= c的值=441Line5-/= c的值=21Line6-%= c的值=11Line7-<<= c的值=44Line8->>= c的值=11Line9-&= c的值=2Line10-^= c的值=0Line11-|= c的值=2sizeof()返回數(shù)據(jù)類型的大小。sizeof(int)4.typeof()class的類型。typeof(StreamReader);&返回變量的地址。&a;*變量的指針。*a;?:?則XYis判斷對象是否為某一類型。If(FordisCar)//FordCaras強(qiáng)制轉(zhuǎn)換,即使轉(zhuǎn)換失敗也不會拋出異常。Objectobj=newStringReader("o");StringReaderr=objasStringReader;usingusingnamespace{class{staticvoidMain(string[]{/*sizeof ine("int的大小是{0}",sizeof(int)); ine("short的大小是{0}",sizeof(short)); inta,b;a=b=(a==1)?20: ine("b{0b=(a==10)?20: ine("b{0b);}}}intshortdoubleb的值是b的值是C#x73*2,在這里,x1320*3*2,然后再加上7。()[]->.++-+-!~++--(type)*&*/+<<<<=>==&^|=+=-=*=/=%=>>=<<=&=^=,usingusingnamespace{class{staticvoidMain(string[]{inta=20;intb=10;intc=15;intd=5;inte;e=(a+b)*c/d;//(30*15)/5Console.Wriine("(ab)*cd{0e=((a+b)*c)/d; //(30*15)/5 ine("((ab)*c)d{0e);e=(a+b)*(c/d); //(30)*(15/5) ine("(ab)*cd{0e);e=a+(b*c)/d; //20+(150/5) ine("ab*c)d{0e);}}}(a+b)*c/d(a+b)*c/d的值是90((ab)*cd90(ab*cd90a+(b*c)/d的值是50C#判斷結(jié)構(gòu)要求程序員指定一個或多個要評估或測試的條件,以及條件為真時要執(zhí)行的語句(必需的)和條件為假時要執(zhí)行if?:Exp1Exp1?Exp2:Exp1Exp1Exp2Exp1為假,則計算Exp3的值,結(jié)果即為整個?表達(dá)式的值。C#如果條件不為假,則循環(huán)將變成無限循環(huán)。for循環(huán)在傳統(tǒng)意義上可用于實現(xiàn)無限循環(huán)。由于構(gòu)成循環(huán)的三個表達(dá)式usingusingnamespace{class{staticvoidMain(string[]{for(;;{ ine("Hey!Iam}}}}(;;)C#"把一個或多個項目封閉在一個物理的或者邏輯的包中"。在面向?qū)ο蟪绦蛟O(shè)計方法論中,封裝是為了防止對ProtectedPublic修飾usingusingnamespace{class{publicdoublewidth;publicdouble{returnlength*}publicvoid{}}//endclassRectangleclass{ine("{0ine("{0ine("{0staticvoidMain(string[]{Rectangler=newRectangle();r.length=4.5; }}}長度:長度:寬度:面積:Private修飾Private修飾符允許一個類將其成員變量和成員函數(shù)對其他的函數(shù)和對象進(jìn)行隱藏。只有同一個類中的函數(shù)可以usingnamespace{class{privatedoublewidth;publicvoid{width=}publicdouble{returnlength*}publicvoidDis{ ine("長度:{0}",length); ine("寬度:{0}",width); }}//endclassRectangleclass{staticvoidMain(string[]{Rectangler=newRectangle();}}}長度:寬度:面積:成員函數(shù)AcceptDetails()和Disy()可以這些變量。Protected修飾Protected修飾符允許子類它的基類的成員變量和成員函數(shù)。這樣有助于實現(xiàn)繼承。在繼承的章節(jié)詳細(xì)討Internal修飾usingusingnamespace{class{internaldoublewidth;double{returnlength*}publicvoid { ine("長度:{0}",length); ine("寬度:{0}",width); }}//endclassRectangleclass{staticvoidMain(string[]{Rectangler=newRectangle();r.length=4.5;r.width=3.5; }}}長度:長度:寬度:面積:在上面的實例中,請注意成員函數(shù)GetArea()的時候不帶有任何修飾符。如果沒有指定修飾符,則使用類成員的默認(rèn)修飾符,即為private。ProtectedInternal修飾ProtectedInternal修飾符允許一個類將其成員變量和成員函數(shù)對同一應(yīng)用程序內(nèi)的子類以外的其他的類對象和函數(shù)進(jìn)C#C#<Access<AccessSpecifier><ReturnType><MethodName>(Parameter{Method}Returntype:返回類型,一個方法可以返回一個值。返回類型是方法返回的值的數(shù)據(jù)類型。如果方法不返回任何值,則返回類型為void。Methodname:方法名稱,是一個唯一的標(biāo)識符,且是大小寫敏感的。它不能與類中的其他標(biāo)識符相同。Parameterlist:參數(shù)列表,使用圓括號括起來,該參數(shù)是用來傳遞和接收方法的數(shù)據(jù)。參數(shù)列表是指方法的參數(shù)類下面的代碼片段顯示一個函數(shù)FindMax,它接受兩個整數(shù)值,并返回兩個中的較大值。它有public修飾符,所以它 classclass{publicintFindMax(intnum1,int{/*局部變量 intresult;if(num1>num2)result=num1;result=return}}C#usingusingnamespace{class{publicintFindMax(intnum1,int{/*局部變量 intresult;if(num1>num2)result=num1;result=return}staticvoidMain(string[]{inta=100;intb=200;intret;NumberManipulatorn=new//FindMaxret=n.FindMax(a, ine("{0}",ret}}}FindMaxNumberManipulator類,您可以從另一個類Test中調(diào)用它。usingusingnamespace{class{publicintFindMax(intnum1,int{/*局部變量*/intresult;if(num1>num2)result=return}}class{staticvoidMain(string[]{inta=100;intb=200;intret;NumberManipulatorn=new//FindMaxret=n.FindMax(a,b);Console.Wriine("最大值是:{0}",ret);}}}usingusingnamespace{class{publicintfactorial(int{intresult;if(num=={return}{result=factorial(num-1)*return}}staticvoidMain(string[]{NumberManipulatorn=new//factorialConsole.Wriine("6的階乘是:{0}",n.factorial(6));Console.Wriine("7的階乘是:{0}",n.factorial(7));Console.Wriine("8的階乘是:{0}",n.factorial(8));}}}#usingusingnamespace{class{publicvoidswap(intx,int{inttempx;/*保存x的值x /*把y賦值給xytemp;/*把temp賦值給y}staticvoidMain(string[]{NumberManipulatorn=newinta=100;intb= ine("在交換之前,a的值:{0}",a); ine("在交換之前,b的值:{0}",n.swap(a,b); ine("在交換之后,a的值:{0}",a); ine("在交換之后,b的值:{0}",}}}在交換之前,在交換之前,a的值:100在交換之前,b的值:200在交換之后,a的值:100在交換之后,busingusingnamespace{class{publicvoidswap(refintx,refint{inttempx;/*保存x的值x /*把y賦值給xytemp;/*把temp賦值給y}staticvoidMain(string[]{NumberManipulatorn=newinta=100;intb= ine("在交換之前,a的值:{0}",a); ine("在交換之前,b的值:{0}",/**/n.swap(refaref ine("在交換之后,a的值:{0}",a); ine("在交換之后,b的值:{0}",}}}在交換之前,在交換之前,a的值:100在交換之前,b的值:200在交換之后,a的值:200在交換之后,breturnusingusingnamespace{class{publicvoidgetValue(outintx{inttemp=5;x=temp;}staticvoidMain(string[]{NumberManipulatorn=newinta=100; ine("在方法調(diào)用之前,a{0n.getValue(outa); }}}}在方法調(diào)用之前,在方法調(diào)用之前,a在方法調(diào)用之后,ausingusingnamespace{class{publicvoidgetValues(outintx,outinty{ ine(" ine("請輸入第二個值:");y=}staticvoidMain(string[]{NumberManipulatorn=newinta,b;/*調(diào)用函數(shù)來獲取值*/n.getValues(outaoutb);Console.Wriine("在方法調(diào)用之后,a{0a);Console.Wriine("在方法調(diào)用之后,b{0b);}}}78在方法調(diào)用之后,a在方法調(diào)用之后,bC#可空類型C#可空類型C#提供了一個特殊的數(shù)據(jù)類型,nullable類型(可空類型),可空類型可以表示其基礎(chǔ)值類型正常范圍內(nèi)的值,再加上一個null值。例如,NullableInt32,讀作"Int32"-2,147,483,6482,147,483,647之間的任意值,也可以被賦值為null值。類似的,Nullable<bool>變量可以被賦值為truefalsenull。null賦值給數(shù)值類型或布爾型的功能特別有用。例如,數(shù)據(jù)庫中的布爾型字段可以值true或false,或者,該字段也可以未定義。<<data_type>?<variable_name>=usingusingnamespace{class{staticvoidMain(string[]{int?num1=null;int?num2=45;double?num3=newdouble?();double?num4=3.14157;bool?boolval=new ine("{012num1,num2,num3,num4); }}}45,Null合并運算符(??Null合并運算符用于定義可空類型和類型的默認(rèn)值。Null合并運算符為類型轉(zhuǎn)換定義了一個預(yù)設(shè)值,以防可空類型的值為Null。Null合并運算符把操作數(shù)類型隱式轉(zhuǎn)換為另一個可空(或不可空)的值類型的操作數(shù)的類型。usingusingnamespace{class{staticvoidMain(string[]{double?num1=null;double?num2=3.14157;doublenum3;num3=num1?? ine("num3{0num3);num3=num2??5.34; ine("num3{0num3);}}}num3num3num3的值:C#數(shù)組數(shù)組是一個相同類型元素的固定大小的順序集合。數(shù)組是用來數(shù)據(jù)的集合,通常認(rèn)為數(shù)組是一個同一類型變量的數(shù)組變量并不是number0、number1、...、number99一個個單獨的變量,而是一個就像numbers這樣的numbers[0]、numbers[1]、...、numbers[99]來表示一個個單獨的變量。數(shù)組中某個指定的元素是通過索引來的。datatype[]datatype[]datatype用于指定被在數(shù)組中的元素的類型。[]指定數(shù)組的秩(維度)。秩指定數(shù)組的大小。arrayName指定數(shù)組的名稱。double[]double[]數(shù)組是一個類型,所以您需要使用new關(guān)鍵字來創(chuàng)建數(shù)組的實例。double[]double[]balance=newdouble[]double[]balance=newdouble[10];balance[0]=4500.0;double[]double[]balance={2340.0,4523.69,intint[]marks=newint[5]{99,98,92,97,intint[]marks=newint[]{99,98,92,97,intint[]marks=newint[]{99,98,92,97,95};int[]score=marks;當(dāng)您創(chuàng)建一個數(shù)組時,C#編譯器會根據(jù)數(shù)組類型隱式初始化每個數(shù)組元素為一個默認(rèn)值。例如,int數(shù)組的所有元素都會被初始化為0。doubledoublesalary=usingusingnamespace{class{staticvoidMain(string[]{int[]nnewint[10/*n10*/inti,j;/*初始化數(shù)組n中的元素*/fori0;i10;i{n[i]=i+}/*輸出每個數(shù)組元素的值*/forj0j10;j{Console.Wriine("Element[{0}]={1}",j,}}}}==========foreachusingusingnamespace{class{staticvoidMain(string[]{intnnewint[10*n10/*nfor(inti=0;i<10;i++{n[i]=i+}foreach(intjinn){inti=j- ine("Element[{0}]={1}",i,j);}}}}}==========C##ArrayC#字符串在C#中,您可以使用字符數(shù)組來表示字符串,但是,更常見的做法是使用string關(guān)鍵字來一個字符串變量。string關(guān)鍵字是System.String類的別名。String通過使用String類構(gòu)造函數(shù)+usingusingnamespace{class{staticvoidMain(string[]{fname="Rowan";lname="Atkinson";stringfullname=fname+lname;//stringchar[]letters={'H','e','l','l','o'};stringgreetings=newstring(letters);string[]sarray={"o","From","Tutorials","Point"};stringmessage=String.Join("",sarray);Console.Wriine("Message:{0}",message);DateTimewaiting=newDateTime(2012,10,10,17,58,1);stringchat=String.Format("Messagesentat{0:t}on{0:D}",Console.ReadKey();}}}FullFullName:RowanAtkinson oFromTutorialsMessage:Messagesentat5:58PMonWednesday,October10,String12String1publicstaticintCompare(stringstrA,stringstrB234567publicstaticstringCopy(stringstr8)9publicboolEquals(stringvaluepublicstaticboolEquals(stringa,stringbpublicintIndexOf(charvaluepublicintIndexOf(stringvaluepublicintIndexOf(charvalue,intstartIndex的索引,索引從0開始。publicintLastIndexOf(charvalueusingusingnamespace{class{staticvoidMain(string[]{stringstr1="Thisistest";stringstr2="Thisisif pare(str1,str2)=={Console.Wriine(str1+"and"+str2+"are}{Console.Wriine(str1+"and"+str2+"arenot}}}}ThisThisistestandThisistextarenot字符串包含字符串:usingusingnamespace{class{staticvoidMain(string[]{stringstr="Thisistest";if(str.Contains("test")){ ine("Thesequence'test'was}}}}TheThesequence'test'wasusingusingnamespace{class{staticvoidMain(string[]{stringstr="LastnightIdreamtofSanPedro";stringsubstr=str.Substring(23);}}}SanSanusingusingnamespace{class{staticvoidMain(string[]{string[]starray=newstring[]{"Downthewaynightsaredark","Andthesunshinesdailyonthemountaintop","Itookatriponasailingship","AndwhenIreachedJamaica","Imadeastringstr=String.Join("\n",starray); }}}DownthewaynightsareAndthesunshinesdailyonthemountaintopItookatriponasailingshipAndwhenIreachedJamaicaImadeastopC#結(jié)構(gòu)在C#中,結(jié)構(gòu)是值類型數(shù)據(jù)結(jié)構(gòu)。它使得一個單一變量可以各種數(shù)據(jù)類型的相關(guān)數(shù)據(jù)。struct關(guān)鍵字用于創(chuàng)建結(jié)Bookstruct語句。struct語句為程序定義了一個帶有多個成員的新的數(shù)據(jù)類型。例如,您可以按照如下的方式Book結(jié)構(gòu):struct{publicstringtitle;publicstringauthor;publicintbook_id;structBooks{publicstringtitle;publicstringauthor;publicintbook_id;publicclass{publicstaticvoidMain(string[]{BooksBook1; Book1,類型為Book*/Books Book2,類型為Book/*book1詳述Book1.title="CProgramming";Book1.author="NuhaAli";Book1.subject="CProgrammingTutorial";Book1.book_id= /*book2詳述Book2.title=" Book2.author="ZaraAli";Book2.subject=" BillingTutorial";Book2.book_id= /*打印Book1信息 ine("Book1title:{0}",Book1.title); ine("Book1author:{0}",Book1.author); ine("Book1subject:{0}",Book1.subject); ine("Book1book_id:{0}",Book1.book_id);/*打印Book2信息 ine("Book2title:{0}",Book2.title); ine("Book2author:{0}",Book2.author); ine("Book2subject:{0}",Book2.subject);Console.Wriine("Book2book_id:{0}",Book2.book_id);}}}Book1title:CProgrammingBook1author:NuhaAliBook1subject:CProgrammingTutorialBook1book_id:Book2title: Book2author:ZaraAliBook2subject: BillingTutorialBook2book_id:C#BooksC#CC+中的結(jié)構(gòu)不同。C#中的結(jié)構(gòu)有一下特 vsusingusingstruct{privatestringtitle;privatestringauthor;privateintbook_id;publicvoidgetValues(stringt,stringa,strings,int{title=t;author=a;subject=s;book_id=}publicvoid { ine("Title:{0}",title); ine("Author:{0}",author); ine("Book_id:{0}",}publicclass{publicstaticvoidMain(string[]{BooksBook1=newBooks();/* Book1,類型為Book*/BooksBook2=newBooks(); Book2,類型為Book/*book1詳述*/"NuhaAli","CProgramming /*book2詳述*/ "ZaraAli", Billing /*Book1*//*Book2*/}}Title:CProgrammingAuthor:NuhaAliSubject:CProgrammingTutorialBook_id:Title: Author:ZaraAliSubject: BillingTutorialBook_id:C#枚舉#enum變量enumenum{enumerationenumenumDays{Sun,Mon,tue,Wed,thu,Fri,Satusingusingnamespace{class{enumDays{Sun,Mon,tue,Wed,thu,Fri,SatstaticvoidMain(string[]{intWeekdayStart=(int)Days.Mon;intWeekdayEnd=(int)Days.Fri; ine("Friday:{0}",WeekdayEnd);}}}Monday:Monday:Friday:C#類<access<accessspecifier>class{//member<accessspecifier><datatype><accessspecifier><datatype><accessspecifier><datatype>//member<accessspecifier><returntype>{//method}<accessspecifier><returntype>{//method}<accessspecifier><returntype>{//method}}標(biāo)識符<accessspecifier>指定了對類及其成員的規(guī)則。如果沒有指定,則使用默認(rèn)的標(biāo)識符。類的默認(rèn)標(biāo)識符是internal,成員的默認(rèn)標(biāo)識符是private。<datatype><returntype>指定了返回的方法返回的數(shù)據(jù)類型。usingusingnamespace{class{publicdoublelength;//長度publicdoublebreadth;//寬度publicdoubleheight;//高度}class{staticvoidMain(string[]{BoxBox1=newBox();BoxBox2=newBox();doublevolume=0.0;Box1,類型為Box2,類型為Box1Box1.height=Box1.length=Box1.breadth=Box2Box2.height=Box2.length=Box2.breadth=Box1volumeBox1.height*Box1.length*Box1.breadth; ine("Box1的體積:{0}",volume);Box2volumeBox2.height*Box2.length*Box2.breadth;Console.Wriine("Box2的體積:{0}",volume);}}}Box1Box1Box2usingnamespace{class{privatedoublelength; //長度privatedoublebreadth;//寬度privatedoubleheight; //高度publicvoidsetLength(doublelen){length=}publicvoidsetBreadth(doublebre{breadth=}publicvoidsetHeight(doublehei{height=}publicdouble{returnlength*breadth*}}class{staticvoidMain(string[]{BoxBox1=new //Box1,類型為BoxBox2=newBox(); //Box2,類型為Boxdoublevolume; //體積Box1//Box2詳述Box1volume=Box1.getVolume();Box2volume=Box2.getVolume();}}}Box1Box1Box2C#usingusingnamespace{class{privatedouble public{ }publicvoidsetLength(doublelen{length=}publicdouble{return}staticvoidMain(string[]{Lineline=new}}}默認(rèn)的構(gòu)造函數(shù)沒有任何參數(shù)。但是如果您需要一個帶有參數(shù)的構(gòu)造函數(shù)可以有參數(shù),這種構(gòu)造函數(shù)叫做參數(shù)化構(gòu)造函數(shù)。這種技術(shù)可以幫助您在創(chuàng)建對象的同時給對象賦初始值,具體請看下面實例:usingusingnamespace{class{privatedouble publicLine(doublelen)//{ ine("對象已創(chuàng)建,length0len);length=len;}publicvoidsetLength(doublelen{length=}publicdouble{return}staticvoidMain(string[]{Lineline=new ine("{0}", }}}對象已創(chuàng)建,對象已創(chuàng)建,lengthC#usingusingnamespace{class{privatedouble publicLine()//{ }{ }publicvoidsetLength(doublelen{length=}publicdouble{return}staticvoidMain(string[]{Lineline=new ine("{0}",}}}C#我們可以使用static關(guān)鍵字把類成員定義為靜態(tài)的。當(dāng)我們一個類成員為靜態(tài)時,意味著無論有多少個類的對象被創(chuàng)static意味著類中只有一個該成員的實例。靜態(tài)變量用于定義常量,因為它們的值可以通過直接調(diào)用類而不需要創(chuàng)usingusingnamespace{class{publicstaticintnum;publicvoidcount(){}publicint{return}}class{staticvoidMain(string[]{StaticVars1=newStaticVar();StaticVars2=newStaticVar();Console.Wriine("s1的變量num:{0}",s1.getNum());Console.Wriine("s2的變量num:{0}",s2.getNum());}}}s1s1num6s2的變量num:usingusingnamespace{class{publicstaticintnum;publicvoidcount(){}publicstaticint{return}}class{staticvoidMain(string[]{StaticVars=newStaticVar();}}}num:C##<acess-specifier>class{}class<derived_class>:{}usingusingnamespace{class{publicvoidsetWidth(int{width=}publicvoidsetHeight(int{height=}protectedintwidth;protectedintheight;}classRectangle:{publicint{return(width*}}class{staticvoidMain(string[]{RectangleRect=newConsole.Wriine("總面積:{0}",Rect.getArea());}}}總面積:總面積:usingusingnamespace{class{protecteddoublewidth;publicRectangle(doublel,double{width=w;}publicdouble{returnlength*}publicvoid { ine("{0 ine("寬度:{0}",width); }}//endclassRectangleclassTabletop:Rectangle{privatedoublepublicTabletop(doublel,doublew):base(l,{publicdouble{doublecost=GetArea()*70;returncost;}publicvoidDis{ ine("{0}}class{staticvoidMain(string[]{Tabletopt=newTabletop(4.5,7.5);}}}長度:長度:寬度:面積:成本:C##usingusingnamespace{class{publicvoidsetWidth(int{width=}publicvoidsetHeight(int{height=}protectedintwidth;protectedintheight;}基類publicinterface{intgetCost(int}classRectangle:Shape,{publicint{return(width*}publicintgetCost(int{returnarea*}}class{staticvoidMain(string[]{RectangleRect=newRectangle();intarea;Console.Wriine("總面積:{0}",Rect.getArea());}}}總面積:總面積:C#在編譯時,函數(shù)和對象的連接機(jī)制被稱為早期綁定,也被稱為靜態(tài)綁定。C#提供了兩種技術(shù)來實現(xiàn)靜態(tài)多態(tài)性。分別usingusingnamespace{class{voidprint(int{ ine("Printingint:{0}",i}voidprint(double{ ine("Printingfloat:{0}",}voidprint(string{ ine("Printingstring:{0}",}staticvoidMain(string[]{Printdatap=newprintprint//調(diào)用print來打印字符串 oC++");}}}PrintingPrintingint:Printingfloat:500.263Printingstring: C#允許您使用關(guān)鍵字 usingusingnamespace{class{ int}classRectangle:{privateintwidth;publicRectangle(inta=0,int{width=}publicoverrideintarea{ return(width*length);}}class{staticvoidMain(string[]{Rectangler=newRectangle(10,7);doublea rarea(); ine("{0}",a);}}}面積:70usingusingnamespace{class{protectedintwidth,height;publicShape(inta=0,intb=0){width=a;height=}publicvirtualint{ return0;}}classRectangle:{publicRectangle(inta=0,intb=0):base(a,{}publicoverrideintarea{ return(width*height);}}classTriangle:{publicTriangle(inta=0,intb=0):base(a,{}publicoverrideint{ return(width*height/2);}}class{publicvoidCallArea(Shape{inta= ine("{0}}class{staticvoidMain(string[]{Callerc=newRectangler=newRectangle(10,7);Trianglet=newTriangle(10,5);}}}C#C#中內(nèi)置的運算符。因此,程序員也可以使用用戶自定義類型的運算符。重載運算符是具有特殊名publicstaticBoxoperator+(Boxb,Box{Boxbox=newbox.length=b.length+c.length;box.breadth=b.breadth+c.breadth;box.height=b.height+c.height;returnbox;}usingusingnamespace{class{privatedoublelength;//長度privatedoublebreadth;//寬度privatedoubleheight;//高度publicdouble{returnlength*breadth*}publicvoidsetLength(doublelen{length=}publicvoidsetBreadth(doublebre{breadth=}publicvoidsetHeight(doublehei{height=}BoxpublicstaticBoxoperator+(Boxb,Box{Boxbox=newbox.length=b.length+c.length;box.breadth=b.breadth+c.breadth;box.height=b.height+c.height;returnbox;}}class{staticvoidMain(string[]{BoxBox1=newBox();//Box1,類型為BoxBoxBox2=newBox();//Box2,類型為BoxBoxBox3=newBox();//Box3,類型為Boxdoublevolume=0.0;//體積Box1Box2Box1volume=Box1.getVolume();Box2volume=Box2.getVolume();Box3=Box1+Box3volume=}}}Box1Box1Box2Box3+,-,!,~,++,-+,-,*,/,==,!=,<,>,<=,&&,+=,-=,*=,/=,=,.,?:,->,new,is,sizeof,usingnamespace{class{privatedoublelength;//長度privatedoublebreadth;//寬度privatedoubleheight;//高度publicdouble{returnlength*breadth*}publicvoidsetLength(doublelen{length=}publicvoidsetBreadth(doublebre{breadth=}publicvoidsetHeight(doublehei{height=}BoxpublicstaticBoxoperator+(Boxb,Box{Boxbox=newbox.length=b.length+c.length;box.breadth=b.breadth+c.breadth;box.height=b.height+c.height;returnbox;}publicstaticbooloperator==(Boxlhs,Box{boolstatus=if(lhs.length==rhs.length&&lhs.height==rhs.height&&lhs.breadth==rhs.breadth){status=}return}publicstaticbooloperator!=(Boxlhs,Box{boolstatus=if(lhs.length!=rhs.length||lhs.height!=||lhs.breadth!={status=}return}publicstaticbooloperator<(Boxlhs,Box{boolstatus=if(lhs.length<rhs.length&&<rhs.height&&lhs.breadth<{status=}return}publicstaticbooloperator>(Boxlhs,Box{boolstatus=if(lhs.length>rhs.length&&>rhs.height&&lhs.breadth>{status=}return}publicstaticbooloperator<=(Boxlhs,Box{boolstatus=if(lhs.length<=rhs.length&&<=rhs.height&&lhs.breadth<={status=}return}publicstaticbooloperator>=(Boxlhs,Box{boolstatus=if(lhs.length>=rhs.length&&>=rhs.height&&lhs.breadth>={status=}return}publicoverridestring{returnString.Format("({0},{1},{2})",length,breadth,}}class{staticvoidMain(string[]{BoxBox1=newBox();//Box1,類型為BoxBoxBox2=newBox();//Box2,類型為BoxBoxBox3=newBox();//Box3,類型為BoxBoxBox4=newBox();doublevolume0.0;////Box1詳述//Box2詳述ToString ine("Box2:{0}",Box1volume=Box1.getVolume();Box2volume=Box2.getVolume();+Box3= + ine("Box3:{0}",Box3volume=Box3.getVolume();if(Box1>Box2)Console.Wriine("Box1大于Box2");if(Box1<Box2)if(Box1>=Box2) if(Box1<=Box2)if(Box1!=Box2)Box4=Box3;if(Box3==Box4)Console.Wriine("Box3不等于}}}Box1:(6,7,Box2:(12,13,Box1Box2Box3:(18,20,Box3的體積:5400Box1不大于Box2Box1小于Box2Box1小于等于Box2Box1不等于Box2Box3等于Box4C#接口"是什么""怎么做publicinterface{doublegetAmount();}usingSystem.Linq;usingnamespace{publicinterface{doublegetAmount();}publicclassTransaction:{privatestringtCode;privatestringdate;publicTransaction(){tCode="date="";}publicTransaction(stringc,stringd,double{tCode=c;date=d;}publicdouble{return}publicvoid{Console.Wriine("Transaction:{0}",tCode);Console.Wriine("Date:{0}",date);Console.Wriine("Amount:{0}",getAmount());}}class{staticvoidMain(string[]{Transactiont1=newTransaction("001","8/10/2012",78900.00);Transactiont2=newTransaction("002","9/10/2012",451900.00);}}}Transaction:Transaction:Amount:78900Date:9/10/2012Amount:451900C#命名空間namespacenamespace{}usingSystem;namespaceusingSystem;namespace{class{publicvoid{ ine("Inside}}}namespace{class{publicvoid{ ine("Inside}}}class{staticvoidMain(string[]{first_space_clfc=newfirst_space_cl();second_space_clsc=newsecond_space_cl();}}}Insidefirst_spaceInsidefirst_spaceusing ine o o您也可以使用using命名空間指令,這樣在使用的時候就不用面加上命名空間名稱。該指令告訴編譯器隨后的代碼usingSystem;usingSystem;usingfirst_space;namesp
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度美容院美容師實習(xí)生實習(xí)考核及就業(yè)保障合同4篇
- 江蘇省無錫市江陰市要塞片2019-2020學(xué)年八年級下學(xué)期期中物理試題【含答案、解析】
- 2025版國際貿(mào)易信用證抵押融資服務(wù)合同樣本3篇
- 2025年度旅游車輛租賃合同(含景點導(dǎo)覽系統(tǒng))4篇
- 《新生兒氣胸》課件
- 2025版小學(xué)生校車租賃合同范本編制3篇
- 2025年度木工支模工程綠色施工與評價合同4篇
- 2025年分銷商分潤協(xié)議范例
- 2025年分銷合同的法律適用
- 2025版幼兒托管班信息化管理及數(shù)據(jù)共享協(xié)議3篇
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 人教版五年級上冊遞等式計算100道及答案
- 2024年新課標(biāo)全國Ⅰ卷語文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問政策
- 中國的世界遺產(chǎn)知到章節(jié)答案智慧樹2023年遼寧科技大學(xué)
- 道路通行能力手冊第4章-高速公路基本路段
- 傳感器與測試技術(shù)試卷及答案
- 2020年普通高等學(xué)校招生全國統(tǒng)一數(shù)學(xué)考試大綱
- GB/T 679-2002化學(xué)試劑乙醇(95%)
評論
0/150
提交評論