版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
W3SchoolC#&ASP.net整理日期C#C#是一個現(xiàn)代的、通用的、面向對象的編程語言,它是由微軟()開發(fā)的,由Ecma和ISO核準認可的C是由AndersHejlsberg和他的團隊在.Net框架開發(fā)期間開發(fā)的C#是專為公共語言基礎結構(CLI)設計的。CLI由可執(zhí)行代碼和運行時環(huán)境組成,允許在不同的計算機平臺和體系結構下面列出了C#成為一種廣泛應用的專業(yè)語言的原它產(chǎn)生高效率的程序它可以在多種計算機平臺上編.Net框架的一部分C#雖然C#的構想十分接近于傳統(tǒng)高級語言CC++,是一門面向對象的編程語言,但是它與Java非常相似,有許多強大下面列出C#一些重要的功能布爾條件(Boolean自動回收(AutomaticGarbageCollection)標準庫(StandardLibrary)組件版本(AssemblyVersioning)委托(Delegates)和事件管理(EventsManagement)索引器條件編譯(ConditionalCompilation)LINQ和Lambda表達式集成C#在這一章中,討論創(chuàng)建C#編程所需的工具。我們已經(jīng)提到C#是.Net框架的一部分,且用于編寫.Net應用程序。因此,在討論運行C#程序的可用工具之前,讓我們先了解一下C#與.Net框架之間的關系。.Net框架(.NetFramework.Net框架是一個創(chuàng)新的平臺,能幫您編寫出下面類型的應用程Web應用程序Web服務.Net框架應用程序是多平臺的應用程序。框架的設計方式使它適用于下列各種語言:C#、C++、VisualBasic、Jscript、COBOL等等。所有這些語言可以框架,彼此之間也可以互相交互。.Net框架由一個巨大的代碼庫組成,用于C#等客戶端語言。下面列出一些.Net框架的組件公共語言運行庫(CommonLanguageRuntime.Net框架類庫(.NetFrameworkClassLibrary)公共語言規(guī)范(CommonLanguageSpecification)通用類型系統(tǒng)(CommonTypeSystem)Windows窗體(WindowsForms)ASP.Net和ASP.NetAJAXWindows工作流基礎(WindowsWorkflowFoundation-WF)Windows顯示基礎(WindowsPresentationFoundation)Windows通信基礎(WindowsCommunicationFoundationWCF)如需了解每個組件的詳細信息,請參閱微軟()的文檔C#的集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment- 微軟()提供了下列用于C#編程的開發(fā)工具VisualStudio2010VisualC#2010ExpressVisualWeb后面兩個是免費使用的,可從微軟。使用這些工具,您可以編寫各種C#程序,從簡單令行應用程序到更復雜的應用程序。您也可以使用基本的文本編輯器(比如Notepad)編寫C#源代碼文件,并使用命令行編譯器(.NETVisualC#ExpressVisualWebDeveloperExpress版本是VisualStudio的定制版本,且具有相同的外觀和感觀。它們保留VisualStudio的大部分功能。在本中,我們使用的是VisualC#2010Express。您可以從VisualStudio上進行。它會自動安裝在您的機器上。請注意,您需要一個可用的網(wǎng)絡連接來完成LinuxMacOSC#雖然.NET框架是運行在Windows操作系統(tǒng)上,但是也有一些運行于其它操作系統(tǒng)上的版本可供選擇。Mono.NET框架的一個開源版本,它包含了一個C#編譯器,且可運行于多種操作系統(tǒng)上,比如各種版本的LinuxMacOS。如需了解詳情,請GoMono。Mono的目的不僅僅是跨平臺地運行微軟.NET應用程序,而且也為Linux開發(fā)者提供了更好的開發(fā)工具。Mono可運行在多種操作系統(tǒng)上,包括Android、BSD、iOS、Linux、OSX、Windows、Solaris和UNIX。C#程序結在我們學習C#編程語言的基礎構件塊之前,讓我們先看一下C#的最小的程序結構,以便作為接下來章節(jié)的參C#oWorld實一個C#程序主要包括以下部命名空間(Namespacedeclaration)一個classClass方Class屬一個Main語句(Statements)&表達式(Expressions)讓我們看一個可以打印出"oWorld"的簡單的代碼usingusing staticvoidMain(string[]/*我的第一個C#程序*/ oWorld");當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結oo讓我們看一下上面程序的各個部程序的第一行usingSystem;-using關鍵字用于在程序中包含System命名空間。個程序一般有多個using語下一行是namespace。一個namespace是一系列的類。oWorldApplication命名空間包含了oWorld下一行是class。類oWorld包含了程序使用的數(shù)據(jù)和方法。類一般包含多個方法。方法定義了類的行為。在這里,oWorld類只有一個Main方法。下一行定義了Main方法,是所有C#程序的點。Main方法說明當執(zhí)行時類將做什么動作。下一行/*...*/將會被編譯器忽略,且它會在程序中添加額外的注釋。 ine("o 指定了它的行為Wriine是一個定義在System命名空間中的Console類的一個方法。該語句會在屏幕上顯示消息"World!"最后一行Console.ReadKey();是針對VS.NET用戶的。這使得程序會等待一個按鍵的動作,防止程序從VisualStudio.NET啟動時屏幕會快速運行并關閉。以下幾點值得注意C是大小寫敏感的所有的語句和表達式必須以分號(;)結程序的執(zhí)行從Main方法開始與Java不同的是,文件名可以不同于類的名&C#如果您使用VisualStudio.Net編譯和執(zhí)行C程序,請按下面的步驟進行啟動VisualStudio在菜單欄上,選擇FileNewProject從模板中選擇VisualC#,然后選擇Windows。選擇ConsoleApplication。為您的項目制定一個名稱,然后點擊OK按鈕新項目會出現(xiàn)在解決方案資源管理器(SolutionExplorer)中。在代碼編輯器(CodeEditor)中編寫代碼。點擊Run按鈕或者按下F5鍵來運行程序。會出現(xiàn)一個命令提示符窗口(CommandPromptwindow),顯示o您也可以使用命令行代替VisualStudioIDE來編譯C#程序保存文件為oworld.cs。打開命令提示符工具,定位到文件所保存 鍵入csc 并按下enter鍵來編譯代碼如果代碼沒有錯誤,命令提示符會進入下一行,并生成oworld.exe可執(zhí)行文件。接下來,鍵入oworld來執(zhí)行程序。您將看到"oWorld"打印在屏幕上C#基本語C#是一種面向對象的編程語言。在面向對象的程序設計方法中,程序由各種相互交互的對象組成。相同種類的對象通常具有相同的類型,或者說,是在相同的class中。例如,以Rectangle(矩形)對象為例。它具有l(wèi)engthwidth屬性。根據(jù)設計,它可能需要接受這些屬性值、計算面積讓我們來看看一個Rectangle(矩形)類的實現(xiàn),并借此討論C#的基本語法usingusingnamespaceclass//成員變量doublewidth;publicvoidlength=width=3.5;publicdoubleGetArea()returnlength*width;publicvoidDisplay()Console.Wriine("Length:{0}",length);Console.Wriine("Width:{0}",width);Console.Wriine("Area:{0}",GetArea());}}class{staticvoidMain(string[]{Rectangler=newRectangle();}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結Length:Length:Width:Area:using在任何C#程序中的第一條語句都usingusingusing關鍵字用于在程序中包含命名空間。一個程序可以包含多個using語句classclass關鍵字用于一個類C#注釋是用于解釋代碼。編譯器會忽略注釋的條目。在C#程序中,多行注釋以/*開始,并以字符*/終止,如下所示/*/*ThisprogramThebasicsyntaxofC#programmingLanguage*/單行注釋是用'//'符號表示。例如}//end}//endclass變量是類的屬性或數(shù)據(jù)成員,用于數(shù)據(jù)。在上面的程序中,Rectangle類有兩個成員變量,名為length和width函數(shù)是一系列執(zhí)行指定任務的語句。類的成員函數(shù)是在類內的。我們舉例的類Rectangle包含了三個成員函數(shù) GetAreaDisplay在上面的程序中,類ExecuteRectangle是一個包含Main()方法和實例化Rectangle類的類標識符是用來識別類、變量、函數(shù)或任何其它用戶定義的項目。在C#中,類名必須遵循如下基本規(guī)則標識符必須以字母開頭,后面可以跟一系列的字母、數(shù)字(09)或下劃線(_)。標識符中的第一個字符不能是標識符必須不包含任何嵌入的空格或符號,比如@^&*。但是,可以使用下劃線()#C#關鍵字是C#編譯器預定義的保留字。這些關鍵字不能用作標識符,但是,如果您想使用這些關鍵字作為標識符,可以在關鍵字前面加上@字符作為前綴。在C#中,有些標識符在代碼的上下文中有特殊的意義,如get和set,這些被稱為上下文關鍵字)下表列出了C#中的保留關鍵字()和上下文關鍵字 保留關鍵上下文關C#數(shù)據(jù)類C中,變量分為以下幾種類型:值類型(Valuetypes)指針類型(Pointertypes)值類型(Valuetypes值類型變量可以直接分配給一個值。它們是從類System.ValueType中派生的值類型直接包含數(shù)據(jù)。比如int、char、float,它們分別數(shù)字、字母、浮點數(shù)。當您一個int類型時,系統(tǒng)分配下表列出了C2010中可用的值類型類描范布爾True8位無符號整0016Unicode字 U(-7.9x10287.9x102810064位雙精度浮點(+/-)5.0x10-324(+/-)1.7x32位單精度浮點-3.4x10383.4x32位有符號整數(shù)-2,147,483,648064位有符號整數(shù)-923,372,036,854,775,8088位有符號整數(shù)類-128016位有符號整數(shù)-32,768032位無符號整數(shù)0064位無符號整數(shù)0016位無符號整數(shù)00如需得到一個類型或一個變量在特定平臺上的準確尺寸,可以使用sizeof方法。表達式sizeof(type)產(chǎn)生以字節(jié)為單位儲對象或類型的尺寸。下面舉例獲取任何機器上int類型 尺寸namespacenamespaceclassstaticvoidMain(string[]Console.Wriine("Sizeofint:{0}",sizeof(int));}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結SizeSizeofint:類型(Referencetypes類型不包含在變量中的實際數(shù)據(jù),但它們包含對變量的換句話說,它們指的是一個內存位置。使用多個變量時,類型可以指向一個內存位置。如果內存位置的數(shù)據(jù)是由一個變量改變的,其他變量會自動反映這種值的變化。內置的類型有:object、dynamic和string。對象(Object)類對象(Object)類型是C#通用類型系統(tǒng)(CommonTypeSystem-CTS)中所有數(shù)據(jù)類型的終極基類。Object是System.Object類的別名。所以對象(Object)類型可以被分配任何其他類型(值類型、類型、預定義類型或用戶自當一個值類型轉換為對象類型時,則被稱為裝箱;另一方面,當一個對象類型轉換為值類型時,則被稱為拆箱。objectobjectobj100;動態(tài)(Dynamic)類您可以任何類型的值在動態(tài)數(shù)據(jù)類型變量中。這些變量的類型檢查是在運行時發(fā)生的動態(tài)類型的語法dynamicdynamic<variable_name>=例如dynamicdynamicd=字符串(String)類字符串(String)類型允許您給變量分配任何字符串值。字符串(String)類型是System.String類的別名。它是從對(Object)類型派生的。字符串(String)類型的值可以通過兩種形式進行分配:引號和@引號例如StringStringstr=一個@引號字符串C#string字符串的前面可以加@(稱作"逐字字符串")將轉義字符(\)當作普通字符對待,比stringstringstr=等價于stringstringstr=@字符串中可以任意換行,換行符及縮進空格都計算在字符串長度之stringstringstr=@"<script-用戶自定義類型有:class、interface或delegate。在以后的章節(jié)中討論這些類型指針類型(Pointertypestype*指針類型變量另一種類型的內存地址。C#中的指針與C或C++中的指針有相同的功能。type*例如int*iptr;在章節(jié)"不安全的代碼"中討論指針類型C#類型轉類型轉換從根本上說是類型鑄造,或者說是把數(shù)據(jù)從一種類型轉換為另一種類型。在C#中,類型鑄造有兩種形隱式類型這些轉換是C#默認的以安全方式進行的轉換。例如,從小的整數(shù)類型轉換為大的整數(shù)類型,從派顯式類型轉-這些轉換是通過用戶使用預定義的函數(shù)顯式完成的。顯式轉換需要強制轉換運算符。classExplicitConversionstaticvoidMain(string[]doubled=5673.74;inti;doubleinti=(int)d; 當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結C#C#提供了下列內置的類型轉換方方法&描1如果可能的話,把類型轉換為布爾2把類型轉換為字節(jié)類3如果可能的話,把類型轉換為單個Unicode字符類型4把類型(整數(shù)或字符串類型)轉換為日期-時間結構5把浮點型或整數(shù)類型轉換為十進制類6把類型轉換為雙精度浮點型7把類型轉換為16位整數(shù)類型8把類型轉換為32位整數(shù)類型9把類型轉換為64位整數(shù)類型把類型轉換為有符號字節(jié)類型把類型轉換為小浮點數(shù)類型把類型轉換為字符串類把類型轉換為指定類把類型轉換為16位無符號整數(shù)類型把類型轉換為32位無符號整數(shù)類型把類型轉換為64位無符號整數(shù)類型下面的實例把不同值的類型轉換為字符串類namespaceclassstaticvoidMain(string[]inti=floatf=53.005f;doubled=2345.7652;boolb=true;當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結C#一個變量只不過是一個供程序操作的區(qū)的名字。在C#中,每個變量都有一個特定的類型,類型決定了變量的內存大我們已經(jīng)討論了各種數(shù)據(jù)類型。C#中提供的基本的值類型大致可以分為以下幾類舉整數(shù)類sbyte、byte、short、ushort、int、uint、long、ulong和浮點float十進制類布爾類truefalse值,指定空類可為空值的數(shù)據(jù)類C#允許定義其他值類型的變量,比如enum,也允許定義類型變量,比如class。這些在以后的章節(jié)中進行C#C中變量定義的語法<data_type><data_type>在這里,data_type必須是一個有效的C#數(shù)據(jù)類型,可以是char、int、float、double或其他用戶自定義的數(shù)據(jù)類variable_list可以由一個或多個用逗號分隔的標識符名稱組一些有效的變量定義如下所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'classProgramstaticvoidMain(string[]shorta;intb;/*實際初始化a=b=c=a+ ine("a={0},b={1},c={2}",a,b,c);當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結果aa=10,b=20,c=System命名空間中的Console類提供了一個函數(shù)ReadLine(),用于接收來自用戶的輸入,并把它到一個變量中例如intintnum=函數(shù)Convert.ToInt32()把用戶輸入的數(shù)據(jù)轉換為int數(shù)據(jù)類型,因為Console.ReadLine()只接受字符串格式的數(shù)據(jù)CLvaluesC中的兩種表達式lvalue:lvalue表達式可以出現(xiàn)在賦值語句的左邊或右rvalue:rvalue表達式可以出現(xiàn)在賦值語句的右邊,不能出現(xiàn)在賦值語句的左變量是lvalue的,所以可以出現(xiàn)在賦值語句的左邊。數(shù)值是rvalue的,因此不能被賦值,不能出現(xiàn)在賦值語句的左邊。intintg=下面是一個無效的語句,會產(chǎn)生編譯時錯1010=C#常量可以被當作常規(guī)的變量,只是它們的值在定義后不能被修整數(shù)常量可以是十進制、八進制或十六進制的常量。前綴指定基數(shù):0x0X表示十六進制,0表示八進制,沒有前綴則整數(shù)常量也可以有后綴,可以是UL的組合,其中,UL分別表示unsignedlong。后綴可以是大寫或者小寫,這里有一些整數(shù)常量的實/*合法/*合法/*合法 :8 以下是各種類型的整數(shù)常量的實
/*十進制/*八進制/*十六進制/*int/*無符號int/*long/*無符號long一個浮點常量是由整數(shù)部分、小數(shù)點、小數(shù)部分和指數(shù)部分組成。您可以使用小數(shù)形式或者指數(shù)形式來表示浮點常這里有一些浮點常量的實/*合法/*合法 時包含兩者。有符號的指數(shù)是用e或E表示的。字符常量是括在單引號里,例如,'x',且可在一個簡單的字符類型變量中。一個字符常量可以是一個普通字符(例'x')、一個轉義序列(例如'\t')或者一個通用字符(例如'\u02C0')C#中有一些特定的字符,當它們的前面帶有反斜杠時有特殊的意義,可用于表示換行符(\n)或制表符tab(\t)。在轉義序含字字字字Alert退格鍵換頁符(Form換行符回水平制表符垂直制表符一到三位的八進制\xhh..一個或多個數(shù)字的十六進制以下是一些轉義序列字符的實classProgramstaticvoidMain(string[] 當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結 字符常量是括在雙引號里,或者是括在@""里。字符串常量包含的字符與字符常量相似,可以是:普通字符、轉義序使用字符串常量時,可以把一個很長的行拆成多個行,可以使用空格分隔各個部這里是一些字符串常量的實例。下面所列的各種形式表示相同的字符"""o,o,""d"oconstconst<data_type><constant_name>=下面的代碼演示了如何在程序中定義和使用常usingusingclassProgramstaticvoidMain(string[]constdoublepi3.14159;double ine("EnterRadius:doubleareaCircle=pi*r*r; ine("Radius:{0},Area:{1}",r,areaCircle);當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結EnterEnterRadius:3,Area:C#運算符是一種告訴編譯器執(zhí)行特定的數(shù)學或邏輯操作的符號。C#有豐富的內置運算符,分類如下:雜項運算本將逐一講解算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符及其他運算符下表顯示了C支持的所有算術運算符。假設變量A的值為10,變量B的值為20,則描實+把兩個操作數(shù)相AB將得到-從第一個操作數(shù)中減去第二個操AB將得到-*把兩個操作數(shù)相A*B將得到/分子除以BA將得到%取模運算符,整除后的余BA將得到自增運算符,整數(shù)值增加A++將得到-自減運算符,整數(shù)值減少A--將得到實請看下面的實例,了解C#中所有可用的算術運算符usingSystem;usingSystem;classstaticvoidMain(string[]args)inta=21;intb=10;intc;c=a+ ine("Line1c{0c);c=a-b; ine("Line2c{0c);c=a*b; ine("Line3c{0c);c=a/b; ine("Line4c{0c);c=a%b; ine("Line5c{0c);c=a++; ine("Line6c{0c);c=a--; ine("Line7c{0c);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結Line1c的值是Line2c的值是Line3c的值是Line4c的值是Line5c的值是Line6c的值是Line7c的值是下表顯示了C支持的所有關系運算符。假設變量A的值為10,變量B的值為20,則描實(AB不為真(AB為真>(AB不為真<(AB為真(AB不為真(AB為真實請看下面的實例,了解C#中所有可用的關系運算符usingusingclass{staticvoidMain(string[]{inta=21;intb=if(a=={}{}
ine("Line1a等于 ine("Line1a不等于if(a<{}{}
ine("Line2a小于 ine("Line2a不小于if(a>{}{}
ine("Line3a大于 ine("Line3a不大于/*改變a和b的值a=b=if(a<={ ine("Line4a小于或等于}if(b>={ ine("Line5b大于或等于}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結果Line1abLine2abLine3-a大于bLine4abLine5b大于或等于下表顯示了C#支持的所有邏輯運算符。假設變量A為布爾值true,變量B為布爾值false,則描實(A&&B為假(A||B為真!!(A&&B為真實請看下面的實例,了解C#中所有可用的邏輯運算符usingSystem;{class{staticvoidMain(string[]{boola=true;boolb=if(a&&{ ine("Line1條件為真}if(a||{ ine("Line2條件為真}/*改變a和b的值a=b=true;if(a&&b){}{}
ine("Line3條件為真 ine("Line3條件不為真if(!(a&&{ ine("Line4條件為真}}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結Line1-Line1-條件為真Line2-條件為真Line3條件不為真Line4-條件為真位運算符作用于位,并逐位執(zhí)行操作。&、|和^的真值表如下所pqp&p|p^00000010111111010011假設如果A60,且B13,現(xiàn)在以二進制格式表示,它們如下所A=0011B=0000A&B=0000A|B=0011A^B=0011~A=1100下表列出了C支持的位運算符。假設變量A的值為60,變量B的值為13,則描實&(A&B將得12,即為0000|(A|B將得到61,即為0011^(A^B將得49,即為0011~(~A)將得到-61,即為11000011,2的補碼形式,帶符號的A<<2將得到240,即為A>>2將得到15,即為實請看下面的實例,了解C#中所有可用的位運算符usingSystem;usingSystem;class{staticvoidMain(string[]{inta= /*60=00111100intb=13; /*13=00001101*/intc=0;c=a&b; /*12=00001100*/ ine("Line1c{0cc=a|b; /*61=00111101*/ ine("Line2c{0c);c=a^b; /*49=00110001*/ ine("Line3c{0c);c=~a; /*-61=11000011*/ ine("Line4c{0c);c=a<< /*240=11110000 ine("Line5c的值是{0c=a>> /*15=00001111 ine("Line6c{0c);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結Line1c的值是Line2c的值是Line3c的值是Line4c的值是-Line5c的值是Line6c的值是下表列出了C#支持的賦值運算符描實=CABAB的值賦CCA相當CC-CA相當CCC*A相當于CC*CA相當于CCCA相當于CC左移且賦值運算C2等同于CC右移且賦值運算C2等同于CC按位與且賦值運算C&2等同于CC&按位異或且賦值運算C^2等同于CC^按位或且賦值運算C|=2等同于CC|實請看下面的實例,了解C#中所有可用的賦值運算符usingSystem;{class{staticvoidMain(string[]{inta=21;intc;c= ine("Line1c的值0c+= ine("Line2c0c-= ine("Line3--=c0c*= ine("Line4*=c0c/= ine("Line5-/=c0c=c%= ine("Line6-%=c0c<<= ine("Line7c的值0}c>>= ine("Line8c的值0}c&= ine("Line9&=c0c);c^=2; ine("Line10^=c0}c);c|=2; ine("Line11|=c0}c);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結Line1-= c的值=21Line2-+= c的值=42Line3--= c的值=21Line4-*= c的值=441Line5-/= c的值=21Line6-%= c的值=11Line7-<<= c的值=44Line8->>= c的值=11Line9-&= c的值=2Line10-^= c的值=0Line11-|= c的值=2下表列出了C支持的其他一些重要的運算符,包括sizeof、typeof?:運算符描述實例sizeof()返回數(shù)據(jù)類型的大小。sizeof(int),將返回4.typeof()返回class的類型。typeof(StreamReader);&返回變量的地址。&a;將得到變量的實際地址。*變量的指針。*a;將指向一個變量。?:條件表達式果條件為真?則為X否則為Yis判斷對象是否為某一類型。If(FordisCar)//檢查Ford是否是Car類的一個對象。as強制轉換,即使轉換失敗也不會拋出異常。Objectobj=newStringReader("o");StringReaderr=objasStringReader;實usingusingnamespaceclassstaticvoidMain(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);當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結int的大小是short的大小是double的大小是b的值是b的值是C#例如x73*2,在這里,x被賦值為13,而不是20,因為運算*具有比更高的優(yōu)先級,所以首先計算乘法3*2,然后再加上7。類運算結合后()[]->.++-從左到一+-!~++--(type)*&從右到乘*/從左到加+從左到移<<從左到關<<=>從左到相==從左到&從左到位異或^從左到|從左到邏輯與從左到邏輯或從左到條從右到賦=+=-=*=/=%=>>=<<=&=^=從右到逗,從左到實usingusingnamespaceclassstaticvoidMain(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);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(a+b)*c/d(a+b)*c/d的值是90((ab)*cd90(ab*cd90a+(b*c)/d的值是50C#判斷結構要求程序員指定一個或多個要評估或測試的條件,以及條件為真時要執(zhí)行的語句(必需的)和條件為假時要執(zhí)行下面是大多數(shù)編程語言中典型的判斷結構的一般形C#提供了以下類型的判斷語句。點擊查看每個語句的細節(jié)語描if語if語句由一個布爾表達式后跟一個或多個語句組一個if語句可跟一個可選的else語句,else語句在布爾表達嵌套if語您可以在一個ifelseif語句內使用另一個ifelseif語句switch語一個 語句允許測試一個變量等于多個值時的情況嵌套switch語您可以在一個switch語句內使用另一個switch語句?:我們已經(jīng)面的章節(jié)中講解了條件運算符?:,可以用來替代if...else語句。它的一般形式如下Exp1Exp1?Exp2:其中,Exp1、Exp2和Exp3是表達式。請注意,冒號的使用和位表達式的值是由Exp1決定的。如果Exp1為真,則計算Exp2的值,結果即為整個表達式的值。如果Exp1為假,則計算Exp3的值,結果即為整個?表達式的值。C#編程語言提供了允許更為復雜的執(zhí)行路徑的多種控制結循環(huán)語句允許我們多次執(zhí)行一個語句或語句組,下面是大多數(shù)編程語言中循環(huán)語句的一般形C#提供了以下幾種循環(huán)類型。點擊查看每個類型的細節(jié)循環(huán)類描while循for循多次執(zhí)行一個語句序列,簡化管理循環(huán)變量的代do...while除了它是在循環(huán)主體結尾測試條件外,其他與while語句類似嵌套循您可以while、fordo..while循環(huán)內使用一個或多個循環(huán)循環(huán)控制語句更改執(zhí)行的正常序列。當執(zhí)行離開一個范圍時,所有在該范圍中創(chuàng)建的自動對象都會被銷C#提供了下列的控制語句。點擊查看每個語句的細節(jié)控制語描break語終止loopswitch語句,程序流將繼續(xù)執(zhí)行緊接著loop的下一條語句continue引起循環(huán)跳過主體的剩余部分,立即重新開始測試條如果條件不為假,則循環(huán)將變成無限循環(huán)。for循環(huán)在傳統(tǒng)意義上可用于實現(xiàn)無限循環(huán)。由于構成循環(huán)的三個表達式usingusingnamespaceclassstaticvoidMain(string[]for(;; ine("Hey!Iam當條件表達式不存在時,它被假設為真。您也可以設置一個初始值和增量表達式,但是一般情況下,程序員偏向于for(;;)結構來表示一個無限循環(huán)C#定義為"把一個或多個項目封閉在一個物理的或者邏輯的包中"。在面向對象程序設計方法論中,封裝是為了防止對實現(xiàn)細節(jié)的。抽象和封裝是面向對象程序設計的相關特性。抽象允許相關信息可視化,封裝則使程序員實現(xiàn)所需級別的抽封裝使用修飾符來實現(xiàn)。一個修飾符定義了一個類成員的范圍和可見性。C#支持的修飾符如下所示ProtectedPublic修飾Public修飾符允許一個類將其成員變量和成員函數(shù)給其他的函數(shù)和對象。任何公有成員可以被外部的類下面的實例說明了這點usingusingclassRectanglepublicdoublewidth;publicdoubleGetArea()returnlength*width;publicvoidDisplay() ine("長度:{0}",length); ine("寬度:{0}",width); }//endclassRectangleclassstaticvoidMain(string[]Rectangler=newr.length=當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結長度:長度:寬度:面積:在上面的實例中,成員變量length和width被為public,所以它們可以被函數(shù)Main()使用Rectangle類的實例r訪成員函數(shù)Display()和GetArea()也可以不通過類的實例直接這些變量成員函數(shù)Display()也被為public,所以它也能被Main()使用Rectangle類的實例rPrivate修飾Private修飾符允許一個類將其成員變量和成員函數(shù)對其他的函數(shù)和對象進行隱藏。只有同一個類中的函數(shù)可以下面的實例說明了這點usingnamespace{class{//成員變privatedoublewidth;publicvoid{ ine("請輸入長 width=}publicdouble{returnlength*}publicvoid{ ine("長度:{0}",length); ine("寬度:{0}",width); }}//endclassRectangleclass{staticvoidMain(string[]{Rectangler=newRectangle();}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結長度:寬度:面積:在上面的實例中,成員變量length和width被為private,所以它們不能被函數(shù)Main()。成員函數(shù)AcceptDetails()和Display()可以這些變量。由于成員函數(shù)AcceptDetails()和Display()被為public,所以它們可以被Main()使用Rectangle類的實例rProtected修飾Protected修飾符允許子類它的基類的成員變量和成員函數(shù)。這樣有助于實現(xiàn)繼承。在繼承的章節(jié)詳細討Internal修飾Internal說明符允許一個類將其成員變量和成員函數(shù)給當前程序中的其他函數(shù)和對象。換句話說,帶有修飾符的任何成員可以被定義在該成員所定義的應用程序內的任何類或方法。usingusingclassRectangleinternaldoublewidth;doubleGetArea()returnlength*width;publicvoidDisplay() ine("長度:{0}",length); ine("寬度:{0}",width); }//endclassRectangleclassstaticvoidMain(string[]Rectangler=newRectangle();r.length=4.5;r.width=當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結長度:長度:寬度:面積:在上面的實例中,請注意成員函數(shù)GetArea()的時候不帶有任何修飾符。如果沒有指定修飾符,則使用類成員的默認修飾符,即為private。Protected 修飾ProtectedInternal修飾符允許一個類將其成員變量和成員函數(shù)對同一應用程序內的子類以外的其他的類對象和函數(shù)進C#一個方法是把一些相關的語句組織在一起,用來執(zhí)行一個任務的語句塊。每一個C#程序至少有一個帶有Main方法的要使用一個方法,您需調用方C#當定義一個方法時,從根本上說是在它的結構的元素。在C#中,定義方法的語法如下<Access<AccessSpecifier><ReturnType><MethodName>(ParameterList)MethodBody下面是方法的各個元素AccessSpecifier:修飾符,這個決定了變量或方法對于另一個類的可見性Returntype:返回類型,一個方法可以返回一個值。返回類型是方法返回的值的數(shù)據(jù)類型。如果方法不返回任何值,則返回類型為void。Methodname:方法名稱,是一個唯一的標識符,且是大小寫敏感的。它不能與類中的其他標識符相同。Parameterlist:參數(shù)列表,使用圓括號括起來,該參數(shù)是用來傳遞和接收方法的數(shù)據(jù)。參數(shù)列表是指方法的參數(shù)類Methodbody:方法主體,包含了完成任務所需的指令集下面的代碼片段顯示一個函數(shù)FindMax,它接受兩個整數(shù)值,并返回兩個中的較大值。它有public修飾符,所以它 classclasspublicintFindMax(intnum1,intintif(num1>num2)result=num1;result=return}}C#您可以使用方法名調用方法。下面的實例演示了這usingusingclassNumberManipulatorpublicintFindMax(intnum1,int/*局部變量 intresult;if(num1>result=result=num2;returnresult;staticvoidMain(string[]/**/inta=100;intb=200;intret;NumberManipulatorn=new//FindMaxret=n.FindMax(a, ine("{0ret當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結您也可以使用類的實例從另一個類中調用其他類的公有方法。例如,方法FindMax屬于NumberManipulator類,您可以從另一個類Test中調用它。usingusingnamespaceclass{publicintFindMax(intnum1,int{/*局部變量*/intresult;if(num1>num2)result=return}}class{staticvoidMain(string[]{inta=100;intb=200;intret;NumberManipulatorn=new//FindMaxret=n.FindMax(a, ine("{0}ret}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結一個方法可以自我調用。這就是所謂的遞歸。下面的實例使用遞歸函數(shù)計算一個數(shù)的階usingusingclassNumberManipulatorpublicintfactorial(intintresult;if(num==returnresult=factorial(num-1)*return}}staticvoidMain(string[]{NumberManipulatorn=new//factorialConsole.Wriine("6{0n.factorial(6));Console.Wriine("7{0n.factorial(7));Console.Wriine("8{0n.factorial(8));}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結當調用帶有參數(shù)的方法時,您需要向方法傳遞參數(shù)。在C#中,有三種向方法傳遞參數(shù)的方方描值參這種方式參數(shù)的實際值給函數(shù)的形式參數(shù),實參和形參使用的是參這種方式參數(shù)的內存位置的給形式參數(shù)。這意味著,當形參輸出參這種方式可以返回多個值這是參數(shù)傳遞的默認方式。在這種方式下,當調用一個方法時,會為每個值參數(shù)創(chuàng)建一個新的位置實際參數(shù)的值會給形參,實參和形參使用的是兩個不同內存中的值。所以,當形參的值發(fā)生改變時,不會影響實參的usingusingnamespaceclasspublicvoidswap(intx,inty)inttemp;temp=x;/*保存x的值*/x=y; /*把y賦值給x*/ytemp;/*把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}",}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結在交換之前,在交換之前,a的值:100在交換之前,b的值:200在交換之后,a的值:100在交換之后,b結果表明,即使在函數(shù)內改變了值,值也沒有發(fā)生任何的變按傳遞參參數(shù)是一個對變量的內存位置的。當按傳遞參數(shù)時,與值參數(shù)不同的是,它不會為這些參數(shù)創(chuàng)建一個新的位置。參數(shù)表示與提供給方法的實際參數(shù)具有相同的內存位置。在C#中,使用ref關鍵字參數(shù)。下面的實例演示了這點usingusingnamespaceclasspublicvoidswap(refintx,refinty)inttemp;temp=x;/*保存x的值x /*yxytemp;/*把temp賦值給ystaticvoidMain(string[]NumberManipulatorn=newinta=100;intb= ine("在交換之前,a的值:{0}",a); ine("在交換之前,b的值:{0}",/**/n.swap(refaref ine("在交換之后,a的值:{0}",a); ine("在交換之后,b的值:{0}",}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結在交換之前,在交換之前,a的值:100在交換之前,b的值:200在交換之后,a的值:200在交換之后,b結果表明,swap函數(shù)內的值改變了,且這個改變可以在Main函數(shù)中反映出來return語句可用于只從函數(shù)中返回一個值。但是,可以使用從函數(shù)中返回兩個值。輸出參數(shù)會把方法輸出的數(shù)據(jù)賦給自己,其他方面與參數(shù)相似。下面的實例演示了這點usingusingclassNumberManipulatorpublicvoidgetValue(outintxinttemp=5;x=temp;staticvoidMain(string[]NumberManipulatorn=new/**/inta=100; ine("在方法調用之前,a{0n.getValue(outa); 當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結在方法調用之前,在方法調用之前,a在方法調用之后,ausingusingclassNumberManipulatorpublicvoidgetValues(outintx,outintyx= ine("y=staticvoidMain(string[]NumberManipulatorn=new/**/inta,b;/*調用函數(shù)來獲取值*/n.getValues(outaoutb); ine("在方法調用之后,a{0} ine("在方法調用之后,b{0}b);當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結果(取決于用戶輸入在方法調用之后,a在方法調用之后,bC#可空類型(NullableC#可空類型(NullableC#提供了一個特殊的數(shù)據(jù)類型,nullable類型(可空類型),可空類型可以表示其基礎值類型正常范圍內的值,再加上一個null值。例如,NullableInt32,讀作"可空的Int32",可以被賦值為-2,147,483,6482,147,483,647之間的任意值,也可以被賦值為null值。類似的,Nullable<bool>變量可以被賦值為truefalsenull。在處理數(shù)據(jù)庫和其他包含可能未賦值的元素的數(shù)據(jù)類型時,將null賦值給數(shù)值類型或布爾型的功能特別有用。例如,數(shù)據(jù)庫中的布爾型字段可以值true或false,或者,該字段也可以未定義。一個nullable類型(可空類型)的語法如<<data_type>?<variable_name>=下面的實例演示了可空數(shù)據(jù)類型的用usingusingclassNullablesAtShowstaticvoidMain(string[]int?num1=null;int?num2=45;double?num3=newdouble?num4=3.14157;bool?boolval=newbool?(); ine("{0},12num1,num2,num3,num4); 當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結顯示可空類型的值:顯示可空類型的值:45,Null合并運算符(??Null合并運算符用于定義可空類型和類型的默認值。Null合并運算符為類型轉換定義了一個預設值,以防可空類型的值為Null。Null合并運算符把操作數(shù)類型隱式轉換為另一個可空(或不可空)的值類型的操作數(shù)的類型。如果第一個操作數(shù)的值為null,則運算符返回第二個操作數(shù)的值,否則返回第一個操作數(shù)的值。下面的實例演示了這usingusingnamespaceclassstaticvoidMain(string[]{double?num1=null;double?num2=3.14157;doublenum3;num3=num1?? ine("num3{0}num3);num3=num2??5.34; ine("num3{0}num3);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結num3num3的值:num3的值:C#數(shù)組(Array數(shù)組是一個相同類型元素的固定大小的順序集合。數(shù)組是用來數(shù)據(jù)的集合,通常認為數(shù)組是一個同一類型變量的數(shù)組變量并不是number0、number1、...、number99一個個單獨的變量,而是一個就像numbers這樣的變量,然后使用numbers[0]、numbers[1]、...、numbers[99]來表示一個個單獨的變量。數(shù)組中某個指定的元素是通過索引來的。所有的數(shù)組都是由連續(xù)的內存位置組成的。最低的地址對應第一個元素,最高的地址對應最后一個元在C#中一個數(shù)組,您可以使用下面的語法datatype[]datatype[]其中datatype用于指定被在數(shù)組中的元素的類型。[]指定數(shù)組的秩(維度)。秩指定數(shù)組的大小。arrayName指定數(shù)組的名稱。例如double[]double[]數(shù)組是一個類型,所以您需要使用new關鍵字來創(chuàng)建數(shù)組的實例。例如double[]double[]balance=new您可以通過使用索引號賦值給一個單獨的數(shù)組元素,比double[]double[]balance=newdouble[10];balance[0]=4500.0;您可以在數(shù)組的同時給數(shù)組賦值,比如double[]double[]balance={2340.0,4523.69,您也可以創(chuàng)建并初始化一個數(shù)組,比intint[]marks=newint[5]{99,98,92,97,在上述情況下,你也可以省略數(shù)組的大小,比intint[]marks=newint[]{99,98,92,97,您也可以賦值一個數(shù)組變量到另一個目標數(shù)組變量中。在這種情況下,目標和源會指向相同的內存位intint[]marks=newint[]{99,98,92,97,95};int[]score=marks;當您創(chuàng)建一個數(shù)組時,C#編譯器會根據(jù)數(shù)組類型隱式初始化每個數(shù)組元素為一個默認值。例如,int數(shù)組的所有元素都會被初始化為0。元素是通過帶索引的數(shù)組名稱來的。這是通過把元素的索引放置在數(shù)組名稱后的方括號中來實現(xiàn)的。例如doubledoublesalary=下面是一個實例,使用上面提到的三個概念, 、賦值 數(shù)組usingusingnamespaceclassstaticvoidMain(string[]int[]nnewint[10/*n是一個帶有10個整數(shù)的數(shù)組*/inti,j;/*初始化數(shù)組n中的元素*/fori0;i10;i{n[i]=i+}/*輸出每個數(shù)組元素的值*/forj0j10;j{Console.Wriine("Element[{0}]={1}",j,}}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結==========foreach面的實例中,我們使用一個for循環(huán)來每個數(shù)組元素。您也可以使用一個foreach語句來遍歷數(shù)組usingusingclassMyArraystaticvoidMain(string[]intnnewint[10*n10/*初始化數(shù)組n中的元素for(inti=0;i<10;i++n[i]=i+foreach(intjinninti=j- ine("Element[{0}]={1}",i,j);當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結==========C#在C#中,數(shù)組是非常重要的,且需要了解的細節(jié)。下面列出了C#程序員必須清楚的一些與數(shù)組相關的重要概念概描數(shù) 支持數(shù)組。數(shù)組最簡單的形式是二維數(shù)組交錯數(shù)C#支持交錯數(shù)組,即數(shù)組的數(shù)傳遞數(shù)組給函參數(shù)數(shù)這通常用于傳遞未知數(shù)量的參數(shù)給函ArraySystem命名空間中定義,是所有數(shù)組的基類,并提供了各種用于C#字符串(String在C#中,您可以使用字符數(shù)組來表示字符串,但是,更常見的做法是使用string關鍵字來一個字符串變量。string關鍵字是System.String類的別名。String您可以使用以下方法之一來穿件string對象通過使用String類構造函數(shù)通過使用字符串串聯(lián)運算符(+通過檢索屬性或調用一個返回字符串的usingusingclassProgram{staticvoidMain(string[]{fname="Rowan";lname="Atkinson";stringfullname=fname+lname;Console.Wriine("FullName:{0}",fullname);//stringchar[]letters={'H','e','l','l','o'};stringgreetings=newstring(letters);Console.Wriine("Greetings:{0}",greetings);//方法返回字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.Wriine("Message:{0}",chat);Console.ReadKey();}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結FullFullName:RowanAtkinson oFromTutorialsMessage:Messagesentat5:58PMonWednesday,October10,StringString類有以下兩個屬性屬性名稱&描1在當String對象中獲取Char對象的指定位置2在當前的String對象中獲取字符StringString類有許多方法用于string對象的操作。下面的表格提供了一些最常用的方&1publicstaticintCompare(stringstrA,stringstrB比較兩個指定的string對象,并返回一個表示它們在排列順序中相對位置的整數(shù)。該方法區(qū)分2publicstaticintCompare(stringstrA,stringstrB,bool eCase比較兩個指定的string對象,并返回一個表示它們在排列順序中相對位置的整數(shù)。但是,如果3publicstaticstringConcat(stringstr0,stringstr1連接兩string對象4publicstaticstringConcat(stringstr0,stringstr1,string tr2連接三string對象5publicstaticstringConcat(stringstr0,stringstr1,string tr2,stringstr3連接四string對象6publicboolContains(stringvalue返回一個表示指定string對象是否出現(xiàn)在字符串中的值7publicstaticstringCopy(stringstr創(chuàng)建一個與指定字符串具有相同值的新的String對象8publicvoidCopyTo(intsourceIndex,char[]destination,int stinationIndex,int)從string對象的指定位置開始指定數(shù)量的字符到Unicode字符數(shù)組中的指定位置9publicboolEndsWith(stringvalue判斷string對象的結尾是否匹配指定的字符判斷當前的string對象是否與指定的string對象具有相同的值publicstaticboolEquals(stringa,stringb判斷兩個指定的string對象是否具有相同的publicstaticstringFormat(stringformat,Objectarg0把指定字符串中一個或多個格式項替換為指定對象的字符串表示形publicintIndexOf(charvalue返回指定Unicode字符在當前字符串中第一次出現(xiàn)的索引,索引從0開始publicintIndexOf(stringvalue返回指定字符串在該實例中第一次出現(xiàn)的索引,索引從0開始publicintIndexOf(charvalue,intstartIndex返回指定Unicode字符從該字符串中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從0開publicintIndexOf(stringvalue,intstartIndex返回指定字符串從該實例中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從 開始publicintIndexOfAny(char[]anyOf返回某一個指定的Unicode字符數(shù)組中任意字符在該實例中第一次出現(xiàn)的索引,索引從0開publicintIndexOfAny(char[]anyOf,intstartIndex返回某一個指定的Unicode字符數(shù)組中任意字符從該實例中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從0開始。publicstringInsert(intstartIndex,stringvalue返回一個新的字符串,其中,指定的字符串入在當前 對象的指定索引位置publicstaticboolIsNullOrEmpty(stringvalue指示指定的字符串是否為null或者是否為一個空的字符publicstaticstringJoin(stringseparator,paramsstring[] lue連接一個字符串數(shù)組中的所有元素,使用指定的分隔符分隔每個元 tstartIndex,intcount一個字符串數(shù)組中的指定元素,使用指定的分隔符分隔每個元publicintLastIndexOf(charvalue返回指Unicode字符在當前string對象中最后一次出現(xiàn)的索引位置,索引從0開始publicintLastIndexOf(stringvalue返回指定字符串在當前string對象中最后一次出現(xiàn)的索引位置,索引從0開始publicstringRemove(intstartIndex移除當前實例中的所有字符,從指定位置開始,一直到最后一個位置為止,并返回字符從當前字符串的指定位置開始移除指定數(shù)量的字符,并返回字符publicstringReplace(charoldChar,charnewChar把當前string對象中,所有指定的Unicode字符替換為另一個指定的Unicode字符,并返回新publicstringReplace(stringoldValue,stringnewValue把當前 對象中,所有指定的字符串替換為另一個指定的字符串,并返回新的字符串publicstring[]Split(paramschar[]separator返回一個字符串數(shù)組,包含當前的string對象中的子字符串,子字符串是使用指定的字符數(shù)組中的元素進行分隔的返回一個字符串數(shù)組,包含當前的string對象中的子字符串,子字符串是使用指定的字符數(shù)組中的元素進行分隔的。 參數(shù)指定要返回的子字符串的最大數(shù)目publicboolStartsWith(stringvalue判斷字符串實例的開頭是否匹配指定的字符publicchar[]返回一個帶有當前string對象中所有字符的Unicode字符數(shù)組publicchar[]ToCharArray(intstartIndex,intlength返回一個帶有當前string對象中所有字符的Unicode字符數(shù)組,從指定的索引開始,直到指定publicstring把字符串轉換為小寫并返回publicstring把字符串轉換為大寫并返回publicstring移除當前String對象中的所有前導空白字符和后置空白字符上面的方法列表并不詳盡,請MSDN庫,查看完整的方法列表和String類構造函數(shù)比較字符串usingusingnamespace{class{staticvoidMain(string[]{stringstr1="Thisistest";stringstr2="Thisisif pare(str1,str2)=={Console.Wriine(str1+"and"+str2+"are}{Console.Wriine(str1+"and"+str2+"arenot}}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結ThisThisistestandThisistextarenot字符串包含字符串:usingusingclassStringProgstaticvoidMain(string[]stringstr="Thisistest";if(str.Contains("test")) ine("Thesequence'test'wasfound.");Console.ReadKey();當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結TheThesequence'test'was獲取子字符串:usingusingclassStringProgstaticvoidMain(string[]{stringstr="LastnightIdreamtofSanPedro";stringsubstr=str.Substring(23);}}}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結SanSan連接字符串usingusingclassStringProgstaticvoidMain(string[]string[]starray=newstring[]{"Downthewaynightsare"Andthesunshinesdailyonthemountaintop","Itookatriponasailingship","AndwhenIreachedJamaica","Imadeastop"};stringstr=String.Join("\n",starray); 當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結DownthewaynightsareAndthesunshinesdailyonthemountaintopItookatriponasailingshipAndwhenIreachedJamaicaImadeastopC#結構(Struct在C#中,結構是值類型數(shù)據(jù)結構。它使得一個單一變量可以各種數(shù)據(jù)類型的相關數(shù)據(jù)。struct關鍵字用于創(chuàng)建結結構是用來代表一個記錄。假設您想館中書的動態(tài)。您可能想每本書的以下屬性Book為了定義一個結構,您必須使用struct語句。struct語句為程序定義了一個帶有多個成員的新的數(shù)據(jù)類型。例如,您可以按照如下的方式Book結構:structpublicstringtitle;publicstringauthor;publicintbook_id;下面的程序演示了結構的用struct{publicstringtitle;publicstringauthor;publicintbook_id;publicclass{publicstaticvoidMain(string[]{BooksBooksBook1BookBook2Book/*book1詳述Book1.title="CProgramming";Book1.author="NuhaAli";Book1.subject="CProgrammingBook1.book_id /*book2詳述Book2.title=Book2.author="ZaraBook2.subject= BillingBook2.book_id;/*打印Book1信息 ine("Book1title:{0}",Book1.title); ine("Book1a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孔乙己學習課件
- 第17課《昆明的雨》八年級語文上冊精講同步課堂(統(tǒng)編版)
- 愛車講堂 課件
- 西南林業(yè)大學《材料化學》2022-2023學年第一學期期末試卷
- 西南林業(yè)大學《地理信息系統(tǒng)原理》2023-2024學年第一學期期末試卷
- 應對挫折課件
- 西京學院《機械制造工藝》2023-2024學年第一學期期末試卷
- 幼兒園小班兒歌《鈴兒響叮當》課件
- 西京學院《電機學》2021-2022學年期末試卷
- 醫(yī)保課件 模板
- 機場助航燈光設計說明
- 【勞動教育項目案例一等獎】“追根稻底”-小學勞動項目實踐活動方案
- Trip+itinerary-夏威夷旅游英語行程單
- 教科版科學實驗目錄1-6年級(新版)2022
- 電氣火災消防安全培訓課件
- 齒輪泵泵體的加工工藝與專用夾具設計說明書
- 甲狀腺癌診療指南
- 管理培訓互動游戲游戲-先救誰
- fg-400變頻器說明書
- 行業(yè)產(chǎn)教融合共同體申報書
- 2023年國債資金管理辦法
評論
0/150
提交評論