版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第1章章 C#與與NET平臺介紹平臺介紹本章目標本章目標了解了解.NET Framework 的結構的結構理解理解.NET Framework 的基本概念的基本概念CLRJITCTSMSIL了解了解 .NET Framework 命名空間命名空間了解了解C#程序的基本結構程序的基本結構1 C#語言的由來語言的由來在過去的二十年里,C和C+已經(jīng)成為在商業(yè)軟件的開發(fā)領域中使用最廣泛的語言。它們?yōu)槌绦騿T提供了十分靈活的操作,不過同時也犧牲了一定的開發(fā)效率。與VB等語言相比,同等級別的C/C+應用程序往往需要更長時間來開發(fā)。由于C/C+語言的復雜性,許多程序員都試圖尋找一種新的語言,希望能在功能與效
2、率之間找到一個更為理想的權衡點。VB以犧牲靈活性的代價來提高效率??墒沁@些靈活性正是C/C+程序員所需要的。這些解決方案對編程人員的限制過多(如屏蔽一些底層代碼控制的機制),所提供的功能難以令人滿意。這些語言無法方便地同早先的系統(tǒng)交互,也無法很好地和當前的網(wǎng)絡編程相結合。對于C/C+用戶來說,最理想的解決方案無疑是在快速開發(fā)的同時又可以調用底層平臺的所有功能。他們想要一種和最新的網(wǎng)絡標準保持同步并且能和已有的應用程序良好整合的環(huán)境。另外,一些C/C+開發(fā)人員還需要在必要的時候進行一些底層的編程。C# (C sharp) 是對這一問題的解決方案。C#是一種新的、面向對象的編程語言。它使得程序員可
3、以快速地編寫各種基于Microsoft .NET平臺的應用程序,Microsoft .NET提供了一系列的工具和服務來最大程度地開發(fā)利用計算與通訊領域。 C#語言的特點:C#語言是Microsoft發(fā)布的一種全新的編程語言,是其.Net戰(zhàn)略的一枚重要棋子。C#語言是面向對象的、現(xiàn)代的編程語言,用C#編寫的應用程序可以充分利用.Net的框架體系帶來的優(yōu)點.既可以用來編寫基于通用網(wǎng)絡協(xié)議的Internet服務軟件,也可以編寫各種數(shù)據(jù)庫、網(wǎng)絡服務應用程序和Windows窗口界面程序。C#繼承了C/C+的優(yōu)點和靈活性,能夠充分利用OS系統(tǒng)的底層功能,同時又具備了完全的面向對象特性。可以讓初學者直接了解
4、面向對象編程的各種概念,學習現(xiàn)代的編程思想和手段。代碼代碼被執(zhí)行被執(zhí)行C+VB編譯器編譯器編譯器編譯器可執(zhí)行可執(zhí)行代碼代碼可執(zhí)行可執(zhí)行代碼代碼RUNTIMERUNTIME2 .NET代碼的編譯代碼的編譯語言特定的編譯器和運行庫語言特定的編譯器和運行庫代碼代碼被執(zhí)行被執(zhí)行C+VB編譯器編譯器編譯器編譯器可執(zhí)行可執(zhí)行代碼代碼可執(zhí)行可執(zhí)行代碼代碼RUNTIMERUNTIMEIL+元數(shù)據(jù)CLRIL 和和 CLR 的使用的使用Intermediate LanguageCommon Language Runtime編譯執(zhí)行 .NET 程序MSIL+元數(shù)據(jù)元數(shù)據(jù)機器機器代碼代碼代碼代碼被執(zhí)行被執(zhí)行CLR第一
5、次編譯第一次編譯第二次編譯第二次編譯.NET 程序被編譯兩次,第一次編譯很慢,而第二次程序被編譯兩次,第一次編譯很慢,而第二次編譯較快!編譯較快!語言語言編譯器編譯器.NET 源代碼源代碼Microsoft 中間語言中間語言MSIL+元數(shù)據(jù)機器代碼代碼 被執(zhí)行CLRMSIL幫助語言實現(xiàn)互操作IL 不是字節(jié)代碼,但很接近字節(jié)代碼。因此,執(zhí)行應用程序時,IL 到機器碼的轉換速度非??欤⊥ㄟ^ CLR將 MSIL 轉換為具體 CPU 的代碼CPU 無關的指令集語言語言編譯器編譯器.NET 源代碼程序集程序集moduleILIL語言范例語言范例 IL_0000: nop IL_0001: call IL
6、_0006: nop IL_0007: ldc.i4.0 IL_0008: call IL_000d: nop IL_000e: ldnull IL_000f: ldftn IL_0015: newobj IL_001a: call IL_001f: nop IL_0020: newobj IL_0025: call IL_002a: nop IL_002b: newobj IL_0030: throw通用語言運行時通用語言運行時CLRCLR.NET 源代碼MSIL+元數(shù)據(jù)機器代碼代碼被執(zhí)行管理內存易于設計組件和應用程序,其對象可以跨語言互動跨語言集成(特別是跨語言繼承)JIT 編譯器:一次編
7、譯,就可運行在支持運行庫的任何 CPU 和操作系統(tǒng)上語言語言編譯器編譯器.NET的語言互操作性:的語言互操作性:不同語言編寫的代碼可互相調用不同語言編寫的代碼可互相調用C#的平臺移植性:的平臺移植性:框架框架JIT編譯器編譯器(Just In Time, 即時編譯器即時編譯器)3 .NET Framework 簡介簡介.NET Framework類似于類似于JVM.NET Framework 兩個主要組件:兩個主要組件:通用語言運行時通用語言運行時 (CLR)統(tǒng)一的類庫集統(tǒng)一的類庫集.NET的類庫的類庫:線程線程文件輸入文件輸入/輸出輸出 (I/O)數(shù)據(jù)庫支持數(shù)據(jù)庫支持XML 解析解析數(shù)據(jù)結構
8、數(shù)據(jù)結構.NET Framework 的體系結構通用語言運行時通用語言運行時 (CLR)IO, Drawing, Threading操作系統(tǒng)操作系統(tǒng).Net Framework 類類庫庫 (FCL)CLS和和CTS通用語言規(guī)范通用語言規(guī)范 CLS Common Language Specification規(guī)定所有規(guī)定所有 .NET 語言都應語言都應遵循的規(guī)則遵循的規(guī)則生成可與其他語言互操作生成可與其他語言互操作的應用程序的應用程序通用類型系統(tǒng)通用類型系統(tǒng) (Common Type System, CTS) 包含標準數(shù)據(jù)類型包含標準數(shù)據(jù)類型 包含準則集包含準則集CLS、CTS 和和 MSIL 緊
9、密配合以實現(xiàn)語言互操作性緊密配合以實現(xiàn)語言互操作性命名空間就像在文件系統(tǒng)中一個文件夾容納多命名空間就像在文件系統(tǒng)中一個文件夾容納多個文件一樣,可以看作某些類的一個容器。通個文件一樣,可以看作某些類的一個容器。通過把類放入命名空間可以把相關的類組織起來,過把類放入命名空間可以把相關的類組織起來,并且可以避免命名沖突。命名空間既用作程序并且可以避免命名沖突。命名空間既用作程序的的“內部內部”組織系統(tǒng),也用作組織系統(tǒng),也用作“外部外部”組織系組織系統(tǒng)(一種向其他程序公開自己擁有的程序元素統(tǒng)(一種向其他程序公開自己擁有的程序元素的方法)的方法)使用命名空間:使用命名空間:using類似類似#inclu
10、de4 命名空間1.Hclass A 2.Hclass A 3.cpp#include “1.h”#include “2.h”.3.cppclass A class A namespace a1class A namespace a2class A 3.csusing a1;using a2;a1.Aa2.A常用命名空間常用命名空間命名空間命名空間說明說明System.Drawing 處理圖形和繪圖,包括打印處理圖形和繪圖,包括打印 System.Data 處理數(shù)據(jù)存取和管理,在定義處理數(shù)據(jù)存取和管理,在定義 ADO.NET 技術中扮技術中扮演重要角色演重要角色System.IO 管理對文件和
11、流的同步和異步訪問管理對文件和流的同步和異步訪問System.Windows 處理基于窗體的窗口的創(chuàng)建處理基于窗體的窗口的創(chuàng)建System.Reflection 包含從程序集讀取元數(shù)據(jù)的類包含從程序集讀取元數(shù)據(jù)的類System.Threading 包含用于多線程編程的類包含用于多線程編程的類 System.Collections 包含定義各種對象集的接口和類包含定義各種對象集的接口和類5 創(chuàng)建創(chuàng)建“Hello World”應用程序應用程序單擊單擊“開始開始”“程序程序”“Microsoft Visual Studio .NET 2005”“Microsoft Visual Studio .NE
12、T 2005”此時將打開此時將打開 VS.NET 2005 的起始頁的起始頁要創(chuàng)建要創(chuàng)建 C# 控制臺應用程序,請從列表中選擇控制臺應用程序,請從列表中選擇 “創(chuàng)創(chuàng)建建建建”“項目項目”。此時將打開。此時將打開“新建項目新建項目”窗口窗口選擇選擇“Visual C# 項目項目”作為項目類型,選擇作為項目類型,選擇“控控制臺應用程序制臺應用程序”作為模板作為模板 C# 模板模板Console.WriteLine(Hello World);輸出輸出HelloWorld.csprojAssemblyInfo.csProgram.cs“Hello World”應用程序文件應用程序文件編譯和執(zhí)行編譯和執(zhí)
13、行 C# 應用程序應用程序要生成要生成 C# 項目,請從菜單中選擇項目,請從菜單中選擇“生成生成” “生成解決方案生成解決方案”該過程將編譯項目中包括的所有文件,編譯結該過程將編譯項目中包括的所有文件,編譯結果顯示在果顯示在“輸出輸出”窗口中窗口中 如果結果顯示如果結果顯示“生成生成: 1 成功或最新,成功或最新,0失敗,失敗,0被跳過被跳過”,則說明已經(jīng)成功生成,然后即可交付,則說明已經(jīng)成功生成,然后即可交付該應用程序該應用程序要運行剛才生成的應用程序,請從菜單中選要運行剛才生成的應用程序,請從菜單中選擇擇“調試調試”“開始執(zhí)行開始執(zhí)行(不調試不調試)”輸出結果顯示在輸出結果顯示在 VS.N
14、ET 控制臺窗口中控制臺窗口中C# 應用程序文件夾結構應用程序文件夾結構Visual Studio .NET 2005 創(chuàng)建一個與項目同名的文創(chuàng)建一個與項目同名的文件夾,此處為件夾,此處為“HelloWorld” 該文件夾包含項目文件該文件夾包含項目文件“HelloWorld.csproj”和其他和其他關聯(lián)文件關聯(lián)文件 每個新項目都創(chuàng)建了每個新項目都創(chuàng)建了 bin、obj和和Properties 三個文三個文件夾。件夾。 Bin和和obj這兩個文件夾下都有一個這兩個文件夾下都有一個 Debug 子目錄,其子目錄,其中包含可執(zhí)行文件中包含可執(zhí)行文件 HelloWorld.exe 在在“解決方案資
15、源管理器解決方案資源管理器”中啟用中啟用“顯示所有文件顯示所有文件”選項,選項,可查看可查看“HelloWorld”項目的結構項目的結構 /這是用這是用 C# 編寫的一個簡單的編寫的一個簡單的 HelloWorld 程序程序using System;namespace Notepadclass HelloWorldstatic void Main()Console.WriteLine(Hello World);聲明 HelloWorld 類描述代碼的注釋Hello World 程序程序程序入口點, Main 的返回類型為 void控制臺類的 WriteLine() 方法用于顯示輸出結果導入 S
16、ystem 命名空間聲明命名空間 Notepad將文件保存為將文件保存為 *.cs說明說明:1. 程序一般包括以下幾部分:程序一般包括以下幾部分:名稱空間的引用:使用名稱空間的引用:使用using關鍵字指明引用的名稱空間。關鍵字指明引用的名稱空間。名稱空間的聲明:使用名稱空間的聲明:使用namespace關鍵字聲明名稱空間。關鍵字聲明名稱空間。類:使用類:使用class關鍵字聲明類。關鍵字聲明類。Main方法:方法:Main方法是方法是C# 程序的入口。程序的入口。2. 類中包含了程序所要用到的數(shù)據(jù)和所要執(zhí)行的方法的定義。每個類中類中包含了程序所要用到的數(shù)據(jù)和所要執(zhí)行的方法的定義。每個類中可以
17、有:可以有: (1)變量聲明變量聲明 (2)構造函數(shù)構造函數(shù) (3)方法方法 (4)屬性屬性 (5)事件事件3. 一個文件中可以有一個文件中可以有1個或者多個類。個或者多個類。4. 所有語句都以分號所有語句都以分號;結束。結束。 ZJWCHCC#語言基礎語言基礎第第2章章目標目標在在C#中定義變量和常量中定義變量和常量使用使用C#中的基本數(shù)據(jù)類型中的基本數(shù)據(jù)類型理解裝箱和拆箱的概念理解裝箱和拆箱的概念使用使用C#中的運算符,選擇結構和循環(huán)結構中的運算符,選擇結構和循環(huán)結構定義和使用數(shù)組,了解結構和枚舉定義和使用數(shù)組,了解結構和枚舉了解了解C#中的預處理指令中的預處理指令理解理解C#中常用的字符
18、串處理方法中常用的字符串處理方法第一個第一個 C#程序程序 :HelloWorld using System; class HelloWorld static void Main( ) Console.WriteLine(“Hello, World!”); HelloWorld.cs第一個第一個 C#程序程序 :HelloWorld1: using System;第第 1 行:行:using 關鍵字關鍵字用來引用用來引用.NET框架類庫中的資源框架類庫中的資源通常在程序文件的開頭使用通常在程序文件的開頭使用如果程序中需要多種資源,可以使用多次如果程序中需要多種資源,可以使用多次usingSys
19、tem 命名空間命名空間System命名空間提供了構建應用程序所需的系統(tǒng)統(tǒng)能的訪命名空間提供了構建應用程序所需的系統(tǒng)統(tǒng)能的訪問問第一個第一個 C# 程序程序 :HelloWorld2: class HelloWorld3: .8: 第第 2,3,8 行:行:類類在在C#或其他面向對象語言中,需要編寫類或其他面向對象語言中,需要編寫類使用關鍵字使用關鍵字class定義一個類,類的內容放在一對定義一個類,類的內容放在一對 中中示例中定義了一個名為示例中定義了一個名為HelloWorld的類的類第一個第一個 C# 程序程序 :HelloWorld4: static void Main( )5: .7
20、: 第第 4,5,7 行:行:Main 方法方法w Main 方法是應用程序的入口點,編譯器將由該處開始執(zhí)行方法是應用程序的入口點,編譯器將由該處開始執(zhí)行程序程序w 方法體也放在一對方法體也放在一對 中中w 每個每個C#的應用程序都必須包含的應用程序都必須包含Main方法方法4: static void Main( )5: .7: 第第 4,5,7 行:行:Main方法方法 w static表示表示Main方法是一個全局方法方法是一個全局方法w void表示表示Main方法沒有任何返回值,即返回值是空方法沒有任何返回值,即返回值是空w 參數(shù)放在小括號中定義。此處括號內沒有內容,表明參數(shù)放在小括
21、號中定義。此處括號內沒有內容,表明Main方法方法沒有任何參數(shù)沒有任何參數(shù)第一個第一個 C# 程序程序 :HelloWorld6: Console.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w 在在C#中要執(zhí)行的指令中要執(zhí)行的指令w 語句之間用;分隔,編譯器通過分號來區(qū)分多個語句語句之間用;分隔,編譯器通過分號來區(qū)分多個語句w 使用大括號使用大括號 標識某個代碼塊的開始和結束,從而可以對語標識某個代碼塊的開始和結束,從而可以對語句進行組合。大括號必須成對匹配。句進行組合。大括號必須成對匹配。第一個第一個 C# 程序程序 :HelloWorld6: Con
22、sole.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w HelloWorld程序的主要目的就是在屏幕上顯示一條問候程序的主要目的就是在屏幕上顯示一條問候 WriteLine方法用來將問候語寫到標準輸出設備上。方法用來將問候語寫到標準輸出設備上。w Console代表標準輸出設備代表標準輸出設備- 屏幕,它屬于屏幕,它屬于System命名空間命名空間 w WriteLine方法是方法是Console類的方法。訪問類或對象的方法使用類的方法。訪問類或對象的方法使用 點取符點取符.來完成。來完成。w 字符串用雙引號字符串用雙引號“ ”表示表示w 字符串字符串“
23、Hello,World”是是WriteLine方法的參數(shù),表示屏幕輸出方法的參數(shù),表示屏幕輸出 的內容的內容第一個第一個 C# 程序程序 :HelloWorld系統(tǒng)預定義類型系統(tǒng)預定義類型類型類型描描 述述范圍范圍/精度精度例子例子object所有其它類型的最根本的基所有其它類型的最根本的基礎類型礎類型object o = null;string字符串類型,一個字符串是字符串類型,一個字符串是一個一個Unicode字符序列字符序列string s= Hello;sbyte8-bit 有符號整數(shù)類型有符號整數(shù)類型128.127sbyte val = 12;short16-bit有符號整數(shù)類型有符
24、號整數(shù)類型32,768.32,767short val = 12;int32-bit有符號整數(shù)類型有符號整數(shù)類型2,147,483,648.2,147,483,647int val = 12;long64-bit有符號整數(shù)類型有符號整數(shù)類型9,223,372,036,854,775,808.9,223,372,036,854,775,807long val1 = 12;long val2 = 34L;byte8-bit無符號整數(shù)類型無符號整數(shù)類型0.255byte val1 = 12;byte val2 = 34U;ushort16-bit無符號整數(shù)類型無符號整數(shù)類型0.65,535ushor
25、t val1 = 12;ushort val2 = 34U;uint32-bit無符號整數(shù)類型無符號整數(shù)類型0.4,294,967,295uint val1 = 12;uint val2 = 34U;系統(tǒng)預定義類型系統(tǒng)預定義類型類型類型描描 述述范圍范圍/精度精度例子例子ulong64-bit無符號整數(shù)類型無符號整數(shù)類型0.18,446,744,073,709,551,615ulong val1 = 12;ulong val2 = 34U;ulong val3 = 56L;ulong val4 = 78UL;float單精度浮點數(shù)類型單精度浮點數(shù)類型1.5 1045 至至 3.4 1038,7
26、 位精度位精度float val = 1.23F;double雙精度浮點數(shù)類型雙精度浮點數(shù)類型5.0 10324 至至 1.7 10308,15 位精度位精度double val1 = 1.23;double val2 = 4.56D;bool布爾類型類型布爾類型類型; 一個布爾類型數(shù)據(jù)一個布爾類型數(shù)據(jù)不是真就是假不是真就是假true,falsebool val1 = true;bool val2 = false;char字符類型字符類型; 一個字符數(shù)據(jù)是一個一個字符數(shù)據(jù)是一個Unicode字符字符char val = h;decimal精確十進制類型,有精確十進制類型,有28個有效位個有效位
27、1.0 1028 至至 7.9 1028,28 位精度位精度decimal val = 1.23M;字面量字面量類型類別后綴示例/允許的值bool布爾布爾無無true或或falseint整數(shù)整數(shù)無無int x = 100uint,ulog整數(shù)整數(shù)U或或Uuint x = 1000ulong,ulong長整型長整型L或或llong x = 100000Lulong無符號長整型無符號長整型ul,uL,Ul,UL,lu,Lu,lU或或LUulong x = 4324ulfloat單精度浮點數(shù)類型單精度浮點數(shù)類型F或或ffloat x = 34.76Fdouble雙精度浮點數(shù)類型雙精度浮點數(shù)類型D或或
28、ddouble x = 763.7245Ddecimal精確十進制類型精確十進制類型M或或mdecimal x = 1.544Mchar字符字符無無char x = astring字符串字符串無無string =”abc”int:int iMax = int.MaxValue;int pVal = int.Parse(“100”);short i16 = 50;int i32 = i16;i16 = i32; 錯誤錯誤i16 = (short)i32;decimaldecimal iRate = 3.9834M;iRate = decimal.Round(iRate, 2); /四舍五入四舍五
29、入iRate = decimal.Remainder(512.0M, 51.0M);boolbool bt = (bool)1; /錯誤錯誤charstring pattern = “123abcd?”;bool bt;bt = char.IsLetter(pattern, 3);bt = char.IsNumber(pattern, 3);bt = char.IsLower(pattern, 3);bt = char.IsPunctuation(pattern, 7);bt = char.IsLetterOrDigit(pattern, 3);single,doublefloat f = 2
30、4567.66f;double d = 124.45;If(Single.IsNaN(1/0) 使用使用Parse轉換數(shù)字字符串轉換數(shù)字字符串short shParse = Int16.Parse(100);int iParse = Int32.Parse(100);long shParse = Int64.Parse(100);decimal dParse=decimal.Parse(“99.99);float sParse=float.Parse(“99.99);double dParse=double.Parse(“99.99);字符串字符串字符串直接量字符串直接量string path
31、;path = ”C:note.txt”;path = “C:note.txt”;字符串操作字符串操作索引字符串中的單個字符索引字符串中的單個字符string str = “abcd”;char c = str0;字符串連接字符串連接string s1 = “My age = “;int myAge = 28;string cat = s1 + myAge;字符串操作字符串操作抽取和定位子串抽取和定位子串string poem = “In Xanadu did Kubla Khan”;string poemSeg = poem.Substring(10);poemSeg = poem.Subs
32、tring(0,9);int index = poem.IndexOf(“I”);index = poem.LastIndexOf(“n”);比較字符串比較字符串bool isMatch;string title = Ancient Mariner;isMatch = (title = ANCIENT AMRINER);isMatch = (title.ToUpper() = ANCIENT MARINER);isMatch = title.Equals(Ancient Mariner);String常用方法常用方法C# 中常用的字符串處理方法:中常用的字符串處理方法:Equals() :比較
33、兩個字符串的值是否相等:比較兩個字符串的值是否相等ToLower():將字符串轉換成小寫形式:將字符串轉換成小寫形式IndexOf():查找某個字符在字符串中的位置:查找某個字符在字符串中的位置SubString():從字符串中截取子字符串:從字符串中截取子字符串Join():連接字符串:連接字符串Split():分割字符串:分割字符串Trim():去掉字符串兩邊的空格:去掉字符串兩邊的空格實例實例 將一文件名的擴展名改為將一文件名的擴展名改為.dat。例:。例:1.txt改為改為1.datusing System;using System.Collections.Generic;using
34、System.Linq;using System.Text;namespace _011 class Program static void Main(string args) string filename = 1.2.txt; int indexDot = filename.LastIndexOf(.); string extendName = dat; filename = filename.Substring(0, indexDot+1); filename += extendName; Console.WriteLine(filename); String 常用方法應用常用方法應用1
35、已有如下代碼,按要求增加功能:已有如下代碼,按要求增加功能:static void Main(string args) string email; / 電子郵件地址電子郵件地址 Console.WriteLine(請輸入你的郵箱請輸入你的郵箱:); email = Console.ReadLine(); Console.WriteLine(你的郵箱是你的郵箱是 0, email); 需實現(xiàn)的功能:需實現(xiàn)的功能:1、 輸入輸入 yes 時,程序循環(huán)執(zhí)行時,程序循環(huán)執(zhí)行2、 兼容以下各種形式兼容以下各種形式 yes(YES、yes、 YeS .)3、 提取郵箱的用戶名提取郵箱的用戶名using S
36、ystem;using System.Collections.Generic;using System.Linq;using System.Text;namespace _011 class Program static void Main(string args) while(1) string email; / 電子郵件地址 Console.WriteLine(請輸入你的郵箱:); email = Console.ReadLine(); Console.WriteLine(你的郵箱是 0, email); Console.WriteLine(繼續(xù)輸入郵箱嗎?); string input
37、= Console.ReadLine(); if (input.ToUpper() = YES) continue; else break; while (true)String 常用方法應用常用方法應用2輸入一個字符串,輸出每個單詞,重新用下劃線輸入一個字符串,輸出每個單詞,重新用下劃線連接輸出連接輸出使用使用 Split() 方法分割字符串方法分割字符串使用使用 Join() 方法連接字符串方法連接字符串Split()方法方法分割字符串分割字符串代碼分析代碼分析splitStrings = inputString.Split( );/ 將分割后的字符串使用下劃線連接在一起將分割后的字符串使
38、用下劃線連接在一起joinString = string.Join(_, splitStrings); 返回值為返回值為字符串數(shù)組字符串數(shù)組字符串變量名字符串變量名參數(shù):分隔符(參數(shù):分隔符(char型)型)返回字符串返回字符串靜態(tài)方法靜態(tài)方法參數(shù)參數(shù)1:連接符:連接符參數(shù)參數(shù)2:字符串數(shù)組:字符串數(shù)組關鍵代碼:關鍵代碼:Join()方法方法連接字符串連接字符串using System;class Program static void Main(string args) string inputString; inputString = Console.ReadLine(); inputSt
39、ring = inputString.Trim(); string splitStrings = inputString.Split( ); string joinString = string.Join(_, splitStrings); Console.WriteLine(joinString); 如果字符串兩邊有空格?如果字符串兩邊有空格?Format() 方法方法兩種輸出字符串的方式:兩種輸出字符串的方式:string name = 李四李四;Console.WriteLine(My name is + name + ,I am + 18);string name = 李四李四;Con
40、sole.WriteLine(My name is 0 ,I am 1 , name,18);格式字符串格式字符串變量列表變量列表String類的類的Format()方法用來格式化字符串方法用來格式化字符串關鍵代碼:關鍵代碼:record = string.Format( 姓名姓名:0n出生年月出生年月:1n身高身高:2n 血型血型:3n星座星座:4n最喜歡的食物最喜歡的食物:5, name, birthday, height, bloodType, planet, favourFood);Console.WriteLine(n這是你的個人檔案這是你的個人檔案:);Console.WriteL
41、ine(record);參數(shù)與參數(shù)與 WritLine() 方法相似方法相似Format() 的語法小結的語法小結string myString = string.Format(格式字符串格式字符串, 參數(shù)列表參數(shù)列表);string myString = string.Format (0 乘以乘以 1 等于等于 2 , 2, 3, 2*3);格式字符串格式字符串代表代表參數(shù)列表參數(shù)列表2乘以乘以3等于等于6包括占位符包括占位符x小結小結補充補充下劃線處的下劃線處的占位符占位符,輸出五個成語,輸出五個成語string yi = 一一;string er = 二二;string san = 三三
42、;string word = string.Format( 獨獨 _ 無無 _,_ 心心 _ 意意,垂涎垂涎 _ 尺尺,略知略知 _ _,舉舉_ 反反 _, yi, er, san);Console.WriteLine(word);string yi = 一一;string er = 二二;string san = 三三;string word = string.Format( 獨獨0無無1,2心心1意意,垂涎垂涎2尺尺,略知略知01,舉舉0反反2, yi, er, san);Console.WriteLine(word);枚舉枚舉qaccess modifiers enum :enum_ba
43、se enum bodyclass MyAppenum Fabric : int Cotton = 1, Silk = 2, Wool = 4static void Main() Fabric fab = Fabric.Cotton; int fabNum = (int) fab; string fabType = fab.ToString(); Console.WriteLine(fab);整型,默認為整型,默認為int默認為默認為internal枚舉和位標志枚舉和位標志namespace MyHelloApp class myApp Flags enum Fabric Cotton = 1
44、, Silk = 2 static void Main() Fabric fab1 = (Fabric)3; Console.WriteLine(fab1.ToString(); System.Enum的方法的方法using System;namespace App1 class myApp enum Fabric Cotton = 1, Silk = 2 static void Main() string fabStr = Cotton; if (Enum.IsDefined(typeof(Fabric), fabStr) Fabric fab = (Fabric)Enum.Parse(ty
45、peof(Fabric), fabStr); Console.WriteLine(Enum.GetName(typeof(Fabric), 2); 變量變量static void Main(string args)/ 聲明布爾型、字符串型、整型、短整型和浮點型變量 bool t = false;short n1 = 30;int n2 = 1200;string str = jeny;float n3 = 23.1f;/ 顯示變量值 Console.WriteLine (布爾值 = + t);Console.WriteLine (短整型值 = + n1);Console.WriteLine (
46、整型值 = + n2);Console.WriteLine (字符串值 = + str);Console.WriteLine (浮點值 = + n3);變量中存儲的值取決于該變量的類型常量常量static void Main(string args)/ PI常量PIconst float _pi = 3.1415169F;/ 由地球引力引起的加速度常量,單位為 cm/s*s const float _gravity = 980;/ 鐘擺的長度 int length = 60;/ 鐘擺的周期 double period = 0;/ 鐘擺周期的計算公式 period = 2 * _pi * Mat
47、h.Sqrt(length / _gravity);Console.WriteLine (鐘擺的周期為 0 秒, period);聲明常量在表達式中使用常量qconst 關鍵字用于聲明常量數(shù)組數(shù)組數(shù)組是同一數(shù)據(jù)類型的一組值數(shù)組是同一數(shù)據(jù)類型的一組值 數(shù)組屬于引用類型,因此存儲在堆內存中數(shù)組屬于引用類型,因此存儲在堆內存中 數(shù)組元素初始化或給數(shù)組元素賦值都可以在聲數(shù)組元素初始化或給數(shù)組元素賦值都可以在聲明數(shù)組時或在程序的后面階段中進行明數(shù)組時或在程序的后面階段中進行 語法語法: 數(shù)據(jù)類型數(shù)據(jù)類型, 數(shù)組名稱數(shù)組名稱 = new 類型類型 n,; int arrayHere = new int 6
48、;數(shù)組數(shù)組static void Main(string args)int count;Console.WriteLine(“請輸入準備登機的乘客人數(shù) );count=int.Parse(Console.ReadLine();/ 聲明一個存放姓名的字符串數(shù)組,其長度等于乘客人數(shù) string names = new stringcount;/ 用一個 for 循環(huán)來接受姓名 for(int i=0; i檢查一個數(shù)是否大于檢查一個數(shù)是否大于另一個數(shù)另一個數(shù) 操作數(shù)操作數(shù)1 操作數(shù)操作數(shù)2檢查一個數(shù)是否小于檢查一個數(shù)是否小于另一個數(shù)另一個數(shù) 操作數(shù)操作數(shù)1 =檢查一個數(shù)是否大于檢查一個數(shù)是否大于或
49、等于另一個數(shù)或等于另一個數(shù) 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2= 檢查一個數(shù)是否小于檢查一個數(shù)是否小于或等于另一個數(shù)或等于另一個數(shù) 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2= 檢查兩個值是否相等檢查兩個值是否相等 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2!= 檢查兩個值是否不相檢查兩個值是否不相等等操作數(shù)操作數(shù)1 != 操作數(shù)操作數(shù)2運算符和表達式運算符和表達式類別類別運算符運算符說明說明表達式表達式成員訪問運算符成員訪問運算符.用于訪問數(shù)據(jù)結構的成員用于訪問數(shù)據(jù)結構的成員 數(shù)據(jù)結構數(shù)據(jù)結構.成員成員賦值運算符賦值運算符=給變量賦值給變量賦值 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2邏輯運算符邏輯運算符 & 對
50、兩個表達式執(zhí)行邏輯對兩個表達式執(zhí)行邏輯“與與”運算運算 操作數(shù)操作數(shù)1 & 操作數(shù)操作數(shù)2|對兩個表達式執(zhí)行邏輯對兩個表達式執(zhí)行邏輯“或或”運算運算 操作數(shù)操作數(shù)1 | 操作數(shù)操作數(shù)2!對兩個表達式執(zhí)行邏輯對兩個表達式執(zhí)行邏輯“非非”運算運算! 操作數(shù)操作數(shù)( ) 將操作數(shù)強制轉換為給定將操作數(shù)強制轉換為給定的數(shù)據(jù)類型的數(shù)據(jù)類型 (數(shù)據(jù)類型數(shù)據(jù)類型) 操作數(shù)操作數(shù)運算符和表達式運算符和表達式 9-6賦值運算符賦值運算符 (=)變量 = 表達式;例如:身高 = 177.5;體重 = 78;性別 = “m”;運算符和表達式運算符和表達式 9-7一元運算符一元運算符 (+/-)Variable +;
51、 相當于相當于 Variable = Variable + 1;Variable -; 相當于相當于 Variable = Variable - 1;運算符和表達式運算符和表達式運算符運算符計算方法計算方法表達式表達式求值求值結果(設結果(設 X = 10)+=運算結果運算結果 = 操作數(shù)操作數(shù)1 + 操作數(shù)操作數(shù)2X+= 2X=X+212-=運算結果運算結果 = 操作數(shù)操作數(shù)1 - 操作數(shù)操作數(shù)2X-= 2X=X-28*=運算結果運算結果 = 操作數(shù)操作數(shù)1 * 操作數(shù)操作數(shù)2X*= 2X=X*220/=運算結果運算結果 = 操作數(shù)操作數(shù)1 / 操作數(shù)操作數(shù)2X/= 2X=X/25%=運算結
52、果運算結果 = 操作數(shù)操作數(shù)1 % 操作數(shù)操作數(shù)2X%= 2X=X%20運算符和表達式運算符和表達式C# 運算符的優(yōu)先級運算符的優(yōu)先級優(yōu)先級優(yōu)先級說明說明運算符運算符結合性結合性1括號括號( )從左到右從左到右2自加自加/ /自減運算符自減運算符+/-從右到左從右到左3乘法運算符乘法運算符除法運算符除法運算符取模運算符取模運算符*/%從左到右從左到右4加法運算符加法運算符減法運算符減法運算符+-從左到右從左到右5小于小于小于等于小于等于大于大于大于等于大于等于=從左到右從左到右6等于等于不等于不等于=!=從左到右從左到右從左到右從左到右7邏輯與邏輯與&從左到右從左到右8邏輯或邏輯或|從左到右從
53、左到右9賦值運算符和快捷運賦值運算符和快捷運算符算符= += *= /= %= -=從右到左從右到左選擇結構選擇結構語法:語法: if () else q選擇結構用于根據(jù)表達式的值執(zhí)行語句if else條件:只能是條件:只能是bool類型的值類型的值 選擇結構選擇結構switch (“cotton”)case “COTTON”: case “cotton”: break;case 值3: case 值4: break;switchcase 表達式可以是表達式可以是int、字符或字、字符或字符串符串C#不允許從一個不允許從一個case塊繼塊繼續(xù)執(zhí)行到下一個續(xù)執(zhí)行到下一個case塊。每塊。每個個c
54、ase塊必須以一個跳轉控塊必須以一個跳轉控制語句制語句break、goto或或return結束結束多個多個case標簽可以對應一個標簽可以對應一個代碼塊代碼塊循環(huán)結構循環(huán)結構循環(huán)結構用于對一組命令執(zhí)行一定的次數(shù)或反循環(huán)結構用于對一組命令執(zhí)行一定的次數(shù)或反復執(zhí)行一組命令,直到指定的條件為真。復執(zhí)行一組命令,直到指定的條件為真。循環(huán)結構的類型循環(huán)結構的類型 while 循環(huán)循環(huán)do 循環(huán)循環(huán)for 循環(huán)循環(huán)foreach 循環(huán)循環(huán)條件:只能是條件:只能是bool類型的值類型的值 while 循環(huán)反復執(zhí)行指定的語句,直到指定的循環(huán)反復執(zhí)行指定的語句,直到指定的條件為真條件為真語法語法 :while
55、(條件條件) / 語句語句break 語句可用于退出循環(huán)語句可用于退出循環(huán)continue 語句可用于語句可用于跳過當前循環(huán)并開始下跳過當前循環(huán)并開始下一循環(huán)一循環(huán) while 循環(huán)循環(huán)dowhile 循環(huán)循環(huán)dowhile 循環(huán)與循環(huán)與 while 循環(huán)類似,二循環(huán)類似,二者區(qū)別在于者區(qū)別在于 dowhile 循環(huán)中即使條件為假循環(huán)中即使條件為假時也至少執(zhí)行一次該循環(huán)體中的語句。時也至少執(zhí)行一次該循環(huán)體中的語句。 語法語法 : do / 語句語句 while (條件條件) for 循環(huán)循環(huán)for 循環(huán)要求只有在對特定條件進行判斷后才允循環(huán)要求只有在對特定條件進行判斷后才允許執(zhí)行循環(huán)許執(zhí)行循環(huán)
56、 這種循環(huán)用于將某個語句或語句塊重復執(zhí)行預定這種循環(huán)用于將某個語句或語句塊重復執(zhí)行預定次數(shù)的情形次數(shù)的情形 語法語法 :for (初始值初始值; 條件條件; 增增/減減) /語句語句foreach 循環(huán)循環(huán) 2-1foreach 循環(huán)用于遍歷整個集合或數(shù)組 語法: foreach (數(shù)據(jù)類型數(shù)據(jù)類型 元素元素(變量變量) in 集合或者數(shù)組集合或者數(shù)組) /語句語句 foreach 循環(huán)循環(huán)2-2static void Main(string args)/ 存放字母的個數(shù)存放字母的個數(shù) int Letters = 0;/ 存放數(shù)字的個數(shù)存放數(shù)字的個數(shù)int Digits = 0;/ 存放標點符
57、號的個數(shù)存放標點符號的個數(shù)int Punctuations = 0;/ 用戶提供的輸入用戶提供的輸入 string instr;Console.WriteLine(請輸入一個字符串請輸入一個字符串 );instr = Console.ReadLine();/ 聲明聲明 foreach 循環(huán)以遍歷輸入的字符串中的每個字符。循環(huán)以遍歷輸入的字符串中的每個字符。 foreach(char ch in instr) / 檢查字母檢查字母if(char.IsLetter(ch) Letters+;/ 檢查數(shù)字檢查數(shù)字if(char.IsDigit(ch) Digits+;/ 檢查標點符號檢查標點符號if
58、(char.IsPunctuation(ch) Punctuations+;Console.WriteLine(“字母個數(shù)為:字母個數(shù)為: 0, Letters);Console.WriteLine(“數(shù)字個數(shù)為:數(shù)字個數(shù)為: 0, Digits);Console.WriteLine(“標點符號個數(shù)為:標點符號個數(shù)為: 0, Punctuations);為所有計數(shù)器設置初始值接受輸入對輸入的每一個字符都進行循環(huán)使用了所有輸入的字符之后,循環(huán)自動終止using System;public class WriteTestpublic static void Main() int array = 1
59、, 2, 3, 4, 5 ; foreach (int item in array) Console.WriteLine(item); using System;public class WriteTestpublic static void Main() int array = 1, 2, 3, 4, 5 ; foreach (int item in array) item += item; Console.WriteLine(item); C#的預處理指令的預處理指令2-1預處理指令是預處理指令是C#編譯器在詞法分析階段讀取編譯器在詞法分析階段讀取的語句。這些語句可以指示編譯器包含或不的語
60、句。這些語句可以指示編譯器包含或不包含某些代碼,甚至可以根據(jù)預處理指令的包含某些代碼,甚至可以根據(jù)預處理指令的值終止編譯。值終止編譯。預處理指令由字符預處理指令由字符#標識,并且字符標識,并且字符#必須是必須是該行的第一個非空字符。該行的第一個非空字符。 預處理指令最常見的三個用途是:完成條件預處理指令最常見的三個用途是:完成條件編譯、增加診斷來報告錯誤和警告、定義代編譯、增加診斷來報告錯誤和警告、定義代碼域。碼域。 C#的預處理指令的預處理指令2-2 C#預處理命令預處理命令說明說明#define#undef用于定義一個符號,后取消對一個符號得定用于定義一個符號,后取消對一個符號得定義。如果
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 團購房屋購買合同模板
- 技術保密協(xié)議格式范本
- 旅游景區(qū)合作開發(fā)協(xié)議書
- 校園無線網(wǎng)絡接入規(guī)定
- 掃描合同法律效力評估
- 通信工程施工合同
- 店面出租轉讓合同模板
- 2024年二手房買賣合同協(xié)議書
- 塔式起重機拆卸安全合同示范文本
- 工程地質勘察借款合同
- 2024年新華社招聘筆試參考題庫附帶答案詳解
- 2024年全國統(tǒng)一高考數(shù)學試卷(新高考Ⅱ)含答案
- 2024年中小學學生防范電信網(wǎng)絡詐騙知識競賽題庫及答案
- 24春國家開放大學《學前兒童美術教育活動指導》期末大作業(yè)參考答案
- (正式版)QBT 8027-2024 家用和類似用途電動洗鞋烘鞋機
- 數(shù)字化時代背景下教師角色的思考
- 醫(yī)院績效考核分配方案及實施細則
- 護照加急辦理申請
- 乙炔的理化性質及危險特性表
- 汽車場地越野賽突發(fā)事件應急預案
- 神奇的世界文檔
評論
0/150
提交評論