版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第1章章 C#與與NET平臺介紹平臺介紹本章目標(biāo)本章目標(biāo)了解了解.NET Framework 的結(jié)構(gòu)的結(jié)構(gòu)理解理解.NET Framework 的基本概念的基本概念CLRJITCTSMSIL了解了解 .NET Framework 命名空間命名空間了解了解C#程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)1 C#語言的由來語言的由來在過去的二十年里,C和C+已經(jīng)成為在商業(yè)軟件的開發(fā)領(lǐng)域中使用最廣泛的語言。它們?yōu)槌绦騿T提供了十分靈活的操作,不過同時也犧牲了一定的開發(fā)效率。與VB等語言相比,同等級別的C/C+應(yīng)用程序往往需要更長時間來開發(fā)。由于C/C+語言的復(fù)雜性,許多程序員都試圖尋找一種新的語言,希望能在功能與效
2、率之間找到一個更為理想的權(quán)衡點。VB以犧牲靈活性的代價來提高效率??墒沁@些靈活性正是C/C+程序員所需要的。這些解決方案對編程人員的限制過多(如屏蔽一些底層代碼控制的機制),所提供的功能難以令人滿意。這些語言無法方便地同早先的系統(tǒng)交互,也無法很好地和當(dāng)前的網(wǎng)絡(luò)編程相結(jié)合。對于C/C+用戶來說,最理想的解決方案無疑是在快速開發(fā)的同時又可以調(diào)用底層平臺的所有功能。他們想要一種和最新的網(wǎng)絡(luò)標(biāo)準(zhǔn)保持同步并且能和已有的應(yīng)用程序良好整合的環(huán)境。另外,一些C/C+開發(fā)人員還需要在必要的時候進行一些底層的編程。C# (C sharp) 是對這一問題的解決方案。C#是一種新的、面向?qū)ο蟮木幊陶Z言。它使得程序員可
3、以快速地編寫各種基于Microsoft .NET平臺的應(yīng)用程序,Microsoft .NET提供了一系列的工具和服務(wù)來最大程度地開發(fā)利用計算與通訊領(lǐng)域。 C#語言的特點:C#語言是Microsoft發(fā)布的一種全新的編程語言,是其.Net戰(zhàn)略的一枚重要棋子。C#語言是面向?qū)ο蟮?、現(xiàn)代的編程語言,用C#編寫的應(yīng)用程序可以充分利用.Net的框架體系帶來的優(yōu)點.既可以用來編寫基于通用網(wǎng)絡(luò)協(xié)議的Internet服務(wù)軟件,也可以編寫各種數(shù)據(jù)庫、網(wǎng)絡(luò)服務(wù)應(yīng)用程序和Windows窗口界面程序。C#繼承了C/C+的優(yōu)點和靈活性,能夠充分利用OS系統(tǒng)的底層功能,同時又具備了完全的面向?qū)ο筇匦???梢宰尦鯇W(xué)者直接了解
4、面向?qū)ο缶幊痰母鞣N概念,學(xué)習(xí)現(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í)行應(yīng)用程序時,IL 到機器碼的轉(zhuǎn)換速度非常快!通過 CLR將 MSIL 轉(zhuǎn)換為具體 CPU 的代碼CPU 無關(guān)的指令集語言語言編譯器編譯器.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í)行管理內(nèi)存易于設(shè)計組件和應(yīng)用程序,其對象可以跨語言互動跨語言集成(特別是跨語言繼承)JIT 編譯器:一次編
7、譯,就可運行在支持運行庫的任何 CPU 和操作系統(tǒng)上語言語言編譯器編譯器.NET的語言互操作性:的語言互操作性:不同語言編寫的代碼可互相調(diào)用不同語言編寫的代碼可互相調(diào)用C#的平臺移植性:的平臺移植性:框架框架JIT編譯器編譯器(Just In Time, 即時編譯器即時編譯器)3 .NET Framework 簡介簡介.NET Framework類似于類似于JVM.NET Framework 兩個主要組件:兩個主要組件:通用語言運行時通用語言運行時 (CLR)統(tǒng)一的類庫集統(tǒng)一的類庫集.NET的類庫的類庫:線程線程文件輸入文件輸入/輸出輸出 (I/O)數(shù)據(jù)庫支持?jǐn)?shù)據(jù)庫支持XML 解析解析數(shù)據(jù)結(jié)構(gòu)
8、數(shù)據(jù)結(jié)構(gòu).NET Framework 的體系結(jié)構(gòu)通用語言運行時通用語言運行時 (CLR)IO, Drawing, Threading操作系統(tǒng)操作系統(tǒng).Net Framework 類類庫庫 (FCL)CLS和和CTS通用語言規(guī)范通用語言規(guī)范 CLS Common Language Specification規(guī)定所有規(guī)定所有 .NET 語言都應(yīng)語言都應(yīng)遵循的規(guī)則遵循的規(guī)則生成可與其他語言互操作生成可與其他語言互操作的應(yīng)用程序的應(yīng)用程序通用類型系統(tǒng)通用類型系統(tǒng) (Common Type System, CTS) 包含標(biāo)準(zhǔn)數(shù)據(jù)類型包含標(biāo)準(zhǔn)數(shù)據(jù)類型 包含準(zhǔn)則集包含準(zhǔn)則集CLS、CTS 和和 MSIL 緊
9、密配合以實現(xiàn)語言互操作性緊密配合以實現(xiàn)語言互操作性命名空間就像在文件系統(tǒng)中一個文件夾容納多命名空間就像在文件系統(tǒng)中一個文件夾容納多個文件一樣,可以看作某些類的一個容器。通個文件一樣,可以看作某些類的一個容器。通過把類放入命名空間可以把相關(guān)的類組織起來,過把類放入命名空間可以把相關(guān)的類組織起來,并且可以避免命名沖突。命名空間既用作程序并且可以避免命名沖突。命名空間既用作程序的的“內(nèi)部內(nèi)部”組織系統(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 技術(shù)中扮技術(shù)中扮演重要角色演重要角色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”應(yīng)用程序應(yīng)用程序單擊單擊“開始開始”“程序程序”“Microsoft Visual Studio .NET 2005”“Microsoft Visual Studio .NE
12、T 2005”此時將打開此時將打開 VS.NET 2005 的起始頁的起始頁要創(chuàng)建要創(chuàng)建 C# 控制臺應(yīng)用程序,請從列表中選擇控制臺應(yīng)用程序,請從列表中選擇 “創(chuàng)創(chuàng)建建建建”“項目項目”。此時將打開。此時將打開“新建項目新建項目”窗口窗口選擇選擇“Visual C# 項目項目”作為項目類型,選擇作為項目類型,選擇“控控制臺應(yīng)用程序制臺應(yīng)用程序”作為模板作為模板 C# 模板模板Console.WriteLine(Hello World);輸出輸出HelloWorld.csprojAssemblyInfo.csProgram.cs“Hello World”應(yīng)用程序文件應(yīng)用程序文件編譯和執(zhí)行編譯和執(zhí)
13、行 C# 應(yīng)用程序應(yīng)用程序要生成要生成 C# 項目,請從菜單中選擇項目,請從菜單中選擇“生成生成” “生成解決方案生成解決方案”該過程將編譯項目中包括的所有文件,編譯結(jié)該過程將編譯項目中包括的所有文件,編譯結(jié)果顯示在果顯示在“輸出輸出”窗口中窗口中 如果結(jié)果顯示如果結(jié)果顯示“生成生成: 1 成功或最新,成功或最新,0失敗,失敗,0被跳過被跳過”,則說明已經(jīng)成功生成,然后即可交付,則說明已經(jīng)成功生成,然后即可交付該應(yīng)用程序該應(yīng)用程序要運行剛才生成的應(yīng)用程序,請從菜單中選要運行剛才生成的應(yīng)用程序,請從菜單中選擇擇“調(diào)試調(diào)試”“開始執(zhí)行開始執(zhí)行(不調(diào)試不調(diào)試)”輸出結(jié)果顯示在輸出結(jié)果顯示在 VS.N
14、ET 控制臺窗口中控制臺窗口中C# 應(yīng)用程序文件夾結(jié)構(gòu)應(yīng)用程序文件夾結(jié)構(gòu)Visual Studio .NET 2005 創(chuàng)建一個與項目同名的文創(chuàng)建一個與項目同名的文件夾,此處為件夾,此處為“HelloWorld” 該文件夾包含項目文件該文件夾包含項目文件“HelloWorld.csproj”和其他和其他關(guān)聯(lián)文件關(guān)聯(lián)文件 每個新項目都創(chuàng)建了每個新項目都創(chuàng)建了 bin、obj和和Properties 三個文三個文件夾。件夾。 Bin和和obj這兩個文件夾下都有一個這兩個文件夾下都有一個 Debug 子目錄,其子目錄,其中包含可執(zhí)行文件中包含可執(zhí)行文件 HelloWorld.exe 在在“解決方案資
15、源管理器解決方案資源管理器”中啟用中啟用“顯示所有文件顯示所有文件”選項,選項,可查看可查看“HelloWorld”項目的結(jié)構(gòu)項目的結(jié)構(gòu) /這是用這是用 C# 編寫的一個簡單的編寫的一個簡單的 HelloWorld 程序程序using System;namespace Notepadclass HelloWorldstatic void Main()Console.WriteLine(Hello World);聲明 HelloWorld 類描述代碼的注釋Hello World 程序程序程序入口點, Main 的返回類型為 void控制臺類的 WriteLine() 方法用于顯示輸出結(jié)果導(dǎo)入 S
16、ystem 命名空間聲明命名空間 Notepad將文件保存為將文件保存為 *.cs說明說明:1. 程序一般包括以下幾部分:程序一般包括以下幾部分:名稱空間的引用:使用名稱空間的引用:使用using關(guān)鍵字指明引用的名稱空間。關(guān)鍵字指明引用的名稱空間。名稱空間的聲明:使用名稱空間的聲明:使用namespace關(guān)鍵字聲明名稱空間。關(guān)鍵字聲明名稱空間。類:使用類:使用class關(guān)鍵字聲明類。關(guān)鍵字聲明類。Main方法:方法:Main方法是方法是C# 程序的入口。程序的入口。2. 類中包含了程序所要用到的數(shù)據(jù)和所要執(zhí)行的方法的定義。每個類中類中包含了程序所要用到的數(shù)據(jù)和所要執(zhí)行的方法的定義。每個類中可以
17、有:可以有: (1)變量聲明變量聲明 (2)構(gòu)造函數(shù)構(gòu)造函數(shù) (3)方法方法 (4)屬性屬性 (5)事件事件3. 一個文件中可以有一個文件中可以有1個或者多個類。個或者多個類。4. 所有語句都以分號所有語句都以分號;結(jié)束。結(jié)束。 ZJWCHC.C#語言基礎(chǔ)語言基礎(chǔ)第第2章章目標(biāo)目標(biāo)在在C#中定義變量和常量中定義變量和常量使用使用C#中的基本數(shù)據(jù)類型中的基本數(shù)據(jù)類型理解裝箱和拆箱的概念理解裝箱和拆箱的概念使用使用C#中的運算符,選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中的運算符,選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)定義和使用數(shù)組,了解結(jié)構(gòu)和枚舉定義和使用數(shù)組,了解結(jié)構(gòu)和枚舉了解了解C#中的預(yù)處理指令中的預(yù)處理指令理解理解C#中常用的字
18、符串處理方法中常用的字符串處理方法第一個第一個 C#程序程序 :HelloWorld using System; class HelloWorld static void Main( ) Console.WriteLine(“Hello, World!”); HelloWorld.cs第一個第一個 C#程序程序 :HelloWorld1: using System;第第 1 行:行: using 關(guān)鍵字關(guān)鍵字用來引用用來引用.NET框架類庫中的資源框架類庫中的資源通常在程序文件的開頭使用通常在程序文件的開頭使用如果程序中需要多種資源,可以使用多次如果程序中需要多種資源,可以使用多次using
19、System 命名空間命名空間System命名空間提供了構(gòu)建應(yīng)用程序所需的系統(tǒng)統(tǒng)能的訪命名空間提供了構(gòu)建應(yīng)用程序所需的系統(tǒng)統(tǒng)能的訪問問第一個第一個 C# 程序程序 :HelloWorld2: class HelloWorld3: .8: 第第 2,3,8 行:行: 類類在在C#或其他面向?qū)ο笳Z言中,需要編寫類或其他面向?qū)ο笳Z言中,需要編寫類使用關(guān)鍵字使用關(guān)鍵字class定義一個類,類的內(nèi)容放在一對定義一個類,類的內(nèi)容放在一對 中中示例中定義了一個名為示例中定義了一個名為HelloWorld的類的類第一個第一個 C# 程序程序 :HelloWorld4: static void Main( )5
20、: .7: 第第 4,5,7 行:行:Main 方法方法w Main 方法是應(yīng)用程序的入口點,編譯器將由該處開始執(zhí)行方法是應(yīng)用程序的入口點,編譯器將由該處開始執(zhí)行程序程序w 方法體也放在一對方法體也放在一對 中中w 每個每個C#的應(yīng)用程序都必須包含的應(yīng)用程序都必須包含Main方法方法4: static void Main( )5: .7: 第第 4,5,7 行:行:Main方法方法 w static表示表示Main方法是一個全局方法方法是一個全局方法w void表示表示Main方法沒有任何返回值,即返回值是空方法沒有任何返回值,即返回值是空w 參數(shù)放在小括號中定義。此處括號內(nèi)沒有內(nèi)容,表明參數(shù)
21、放在小括號中定義。此處括號內(nèi)沒有內(nèi)容,表明Main方法方法沒有任何參數(shù)沒有任何參數(shù)第一個第一個 C# 程序程序 :HelloWorld6: Console.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w 在在C#中要執(zhí)行的指令中要執(zhí)行的指令w 語句之間用;分隔,編譯器通過分號來區(qū)分多個語句語句之間用;分隔,編譯器通過分號來區(qū)分多個語句w 使用大括號使用大括號 標(biāo)識某個代碼塊的開始和結(jié)束,從而可以對語標(biāo)識某個代碼塊的開始和結(jié)束,從而可以對語句進行組合。大括號必須成對匹配。句進行組合。大括號必須成對匹配。第一個第一個 C# 程序程序 :HelloWorld6:
22、 Console.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w HelloWorld程序的主要目的就是在屏幕上顯示一條問候程序的主要目的就是在屏幕上顯示一條問候 WriteLine方法用來將問候語寫到標(biāo)準(zhǔn)輸出設(shè)備上。方法用來將問候語寫到標(biāo)準(zhǔn)輸出設(shè)備上。w Console代表標(biāo)準(zhǔn)輸出設(shè)備代表標(biāo)準(zhǔn)輸出設(shè)備- 屏幕,它屬于屏幕,它屬于System命名空間命名空間 w WriteLine方法是方法是Console類的方法。訪問類或?qū)ο蟮姆椒ㄊ褂妙惖姆椒āTL問類或?qū)ο蟮姆椒ㄊ褂?點取符點取符.來完成。來完成。w 字符串用雙引號字符串用雙引號“ ”表示表示w 字符串
23、字符串“Hello,World”是是WriteLine方法的參數(shù),表示屏幕輸出方法的參數(shù),表示屏幕輸出 的內(nèi)容的內(nèi)容第一個第一個 C# 程序程序 :HelloWorld系統(tǒng)預(yù)定義類型系統(tǒng)預(yù)定義類型類型類型描描 述述范圍范圍/精度精度例子例子object所有其它類型的最根本的基所有其它類型的最根本的基礎(chǔ)類型礎(chǔ)類型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,535u
25、short val1 = 12;ushort val2 = 34U;uint32-bit無符號整數(shù)類型無符號整數(shù)類型0.4,294,967,295uint val1 = 12;uint val2 = 34U;系統(tǒng)預(yù)定義類型系統(tǒng)預(yù)定義類型類型類型描描 述述范圍范圍/精度精度例子例子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 10
26、38,7 位精度位精度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ù)類
28、型D或或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
30、 = 24567.66f;double d = 124.45;If(Single.IsNaN(1/0) 使用使用Parse轉(zhuǎn)換數(shù)字字符串轉(zhuǎn)換數(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
31、path;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.
32、Substring(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():將字符串轉(zhuǎn)換成小寫形式:將字符串轉(zhuǎn)換成小寫形式IndexOf():查找某個字符在字符串中的位置:查找某個字符在字符串中的位置SubString():從字符串中截取子字符串:從字符串中截取子字符串Join():連接字符串:連接字符串Split():分割字符串:分割字符串Trim():去掉字符串兩邊的空格:去掉字符串兩邊的空格實例實例 將一文件名的擴展名改為將一文件名的擴展名改為.dat。例:。例:1.txt改為改為1.datusing System;using System.Collections.Generic;us
34、ing System.Linq;using System.Text;namespace _011 class Program static void Main(string args) string = 1.2.txt; int indexDot = (.); string extendName = dat; = (0, indexDot+1); += extendName; Console.WriteLine(); String 常用方法應(yīng)用常用方法應(yīng)用1已有如下代碼,按要求增加功能:已有如下代碼,按要求增加功能:static void Main(string args) string em
35、ail; / 電子郵件地址電子郵件地址 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 System;using System.Collections.Generic;using System.Linq;using Syste
36、m.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 = Console.ReadLine(); if (input.ToUpper() = YES) continue; else brea
37、k; while (true)String 常用方法應(yīng)用常用方法應(yīng)用2輸入一個字符串,輸出每個單詞,重新用下劃線輸入一個字符串,輸出每個單詞,重新用下劃線連接輸出連接輸出使用使用 Split() 方法分割字符串方法分割字符串使用使用 Join() 方法連接字符串方法連接字符串Split()方法方法分割字符串分割字符串代碼分析代碼分析splitStrings = inputString.Split( );/ 將分割后的字符串使用下劃線連接在一起將分割后的字符串使用下劃線連接在一起joinString = string.Join(_, splitStrings); 返回值為返回值為字符串?dāng)?shù)組字符串
38、數(shù)組字符串變量名字符串變量名參數(shù):分隔符(參數(shù):分隔符(char型)型)返回字符串返回字符串靜態(tài)方法靜態(tài)方法參數(shù)參數(shù)1:連接符:連接符參數(shù)參數(shù)2:字符串?dāng)?shù)組:字符串?dāng)?shù)組關(guān)鍵代碼:關(guān)鍵代碼:Join()方法方法連接字符串連接字符串using System;class Program static void Main(string args) string inputString; inputString = Console.ReadLine(); inputString = inputString.Trim(); string splitStrings = inputString.Split(
39、); string joinString = string.Join(_, splitStrings); Console.WriteLine(joinString); 如果字符串兩邊有空格?如果字符串兩邊有空格?Format() 方法方法兩種輸出字符串的方式:兩種輸出字符串的方式:string name = 李四李四;Console.WriteLine(My name is + name + ,I am + 18);string name = 李四李四;Console.WriteLine(My name is 0 ,I am 1 , name,18);格式字符串格式字符串變量列表變量列表Str
40、ing類的類的Format()方法用來格式化字符串方法用來格式化字符串關(guān)鍵代碼:關(guān)鍵代碼:record = string.Format( 姓名:姓名:0n出生年月:出生年月:1n身高:身高:2n 血型:血型:3n星座:星座:4n最喜歡的食物:最喜歡的食物:5, name, birthday, height, bloodType, planet, favourFood);Console.WriteLine(n這是你的個人檔案:這是你的個人檔案:);Console.WriteLine(record);參數(shù)與參數(shù)與 WritLine() 方法相似方法相似Format() 的語法小結(jié)的語法小結(jié)stri
41、ng myString = string.Format(格式字符串格式字符串, 參數(shù)列表參數(shù)列表);string myString = string.Format (0 乘以乘以 1 等于等于 2 , 2, 3, 2*3);格式字符串格式字符串代表代表參數(shù)列表參數(shù)列表2乘以乘以3等于等于6包括占位符包括占位符x小結(jié)小結(jié)補充補充下劃線處的下劃線處的占位符占位符,輸出五個成語,輸出五個成語string yi = 一一;string er = 二二;string san = 三三;string word = string.Format( 獨獨 _ 無無 _,_ 心心 _ 意,垂涎意,垂涎 _ 尺,略
42、知尺,略知 _ _,舉,舉_ 反反 _, 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_base enum bodyclass MyAppenum Fabric : int Cotton = 1, Si
43、lk = 2, Wool = 4static void Main() Fabric fab = Fabric.Cotton; int fabNum = (int) fab; string fabType = fab.ToString(); Console.WriteLine(fab);整型,默認(rèn)為整型,默認(rèn)為int默認(rèn)為默認(rèn)為internal枚舉和位標(biāo)志枚舉和位標(biāo)志namespace MyHelloApp class myApp Flags enum Fabric Cotton = 1, Silk = 2 static void Main() Fabric fab1 = (Fabric)3;
44、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(typeof(Fabric), fabStr); Console.WriteLine(Enum.GetName(t
45、ypeof(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 (整型值 = + n2);Console.WriteLine (字符串值 = + str);Console.Wr
46、iteLine (浮點值 = + 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 * Math.Sqrt(length / _gravity);Console.WriteLine (鐘擺的周期為 0 秒
47、, period);聲明常量在表達(dá)式中使用常量qconst 關(guān)鍵字用于聲明常量數(shù)組數(shù)組數(shù)組是同一數(shù)據(jù)類型的一組值數(shù)組是同一數(shù)據(jù)類型的一組值 數(shù)組屬于引用類型,因此存儲在堆內(nèi)存中數(shù)組屬于引用類型,因此存儲在堆內(nèi)存中 數(shù)組元素初始化或給數(shù)組元素賦值都可以在聲數(shù)組元素初始化或給數(shù)組元素賦值都可以在聲明數(shù)組時或在程序的后面階段中進行明數(shù)組時或在程序的后面階段中進行 語法語法: 數(shù)據(jù)類型數(shù)據(jù)類型, 數(shù)組名稱數(shù)組名稱 = new 類型類型 n,; int arrayHere = new int 6;數(shù)組數(shù)組static void Main(string args)int count;Console.Wri
48、teLine(“請輸入準(zhǔn)備登機的乘客人數(shù) );count=int.Parse(Console.ReadLine();/ 聲明一個存放姓名的字符串?dāng)?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ù)是否大于或等于另一個數(shù)或等于另一個數(shù) 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2= 檢查一個數(shù)是否小于檢查一個數(shù)是否小于或等于另
49、一個數(shù)或等于另一個數(shù) 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2= 檢查兩個值是否相等檢查兩個值是否相等 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2!= 檢查兩個值是否不相檢查兩個值是否不相等等操作數(shù)操作數(shù)1 != 操作數(shù)操作數(shù)2運算符和表達(dá)式運算符和表達(dá)式類別類別運算符運算符說明說明表達(dá)式表達(dá)式成員訪問運算符成員訪問運算符.用于訪問數(shù)據(jù)結(jié)構(gòu)的成員用于訪問數(shù)據(jù)結(jié)構(gòu)的成員 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu).成員成員賦值運算符賦值運算符=給變量賦值給變量賦值 操作數(shù)操作數(shù)1 = 操作數(shù)操作數(shù)2邏輯運算符邏輯運算符 & 對兩個表達(dá)式執(zhí)行邏輯對兩個表達(dá)式執(zhí)行邏輯“與與”運算運算 操作數(shù)操作數(shù)1 & 操作數(shù)操作數(shù)2|對
50、兩個表達(dá)式執(zhí)行邏輯對兩個表達(dá)式執(zhí)行邏輯“或或”運算運算 操作數(shù)操作數(shù)1 | 操作數(shù)操作數(shù)2!對兩個表達(dá)式執(zhí)行邏輯對兩個表達(dá)式執(zhí)行邏輯“非非”運算運算! 操作數(shù)操作數(shù)( ) 將操作數(shù)強制轉(zhuǎn)換為給定將操作數(shù)強制轉(zhuǎn)換為給定的數(shù)據(jù)類型的數(shù)據(jù)類型 (數(shù)據(jù)類型數(shù)據(jù)類型) 操作數(shù)操作數(shù)運算符和表達(dá)式運算符和表達(dá)式 9-6賦值運算符賦值運算符 (=)變量 = 表達(dá)式;例如:身高 = 177.5;體重 = 78;性別 = “m”;運算符和表達(dá)式運算符和表達(dá)式 9-7一元運算符一元運算符 (+/-)Variable +; 相當(dāng)于相當(dāng)于 Variable = Variable + 1;Variable -; 相當(dāng)于
51、相當(dāng)于 Variable = Variable - 1;運算符和表達(dá)式運算符和表達(dá)式運算符運算符計算方法計算方法表達(dá)式表達(dá)式求值求值結(jié)果(設(shè)結(jié)果(設(shè) X = 10)+=運算結(jié)果運算結(jié)果 = 操作數(shù)操作數(shù)1 + 操作數(shù)操作數(shù)2X+= 2X=X+212-=運算結(jié)果運算結(jié)果 = 操作數(shù)操作數(shù)1 - 操作數(shù)操作數(shù)2X-= 2X=X-28*=運算結(jié)果運算結(jié)果 = 操作數(shù)操作數(shù)1 * 操作數(shù)操作數(shù)2X*= 2X=X*220/=運算結(jié)果運算結(jié)果 = 操作數(shù)操作數(shù)1 / 操作數(shù)操作數(shù)2X/= 2X=X/25%=運算結(jié)果運算結(jié)果 = 操作數(shù)操作數(shù)1 % 操作數(shù)操作數(shù)2X%= 2X=X%20運算符和表達(dá)式運算符和
52、表達(dá)式C# 運算符的優(yōu)先級運算符的優(yōu)先級優(yōu)先級優(yōu)先級說明說明運算符運算符結(jié)合性結(jié)合性1括號括號( )從左到右從左到右2自加自加/ /自減運算符自減運算符+/-從右到左從右到左3乘法運算符乘法運算符除法運算符除法運算符取模運算符取模運算符*/%從左到右從左到右4加法運算符加法運算符減法運算符減法運算符+-從左到右從左到右5小于小于小于等于小于等于大于大于大于等于大于等于=從左到右從左到右6等于等于不等于不等于=!=從左到右從左到右從左到右從左到右7邏輯與邏輯與&從左到右從左到右8邏輯或邏輯或|從左到右從左到右9賦值運算符和快捷運賦值運算符和快捷運算符算符= += *= /= %= -=從
53、右到左從右到左選擇結(jié)構(gòu)選擇結(jié)構(gòu)語法:語法: if () else q選擇結(jié)構(gòu)用于根據(jù)表達(dá)式的值執(zhí)行語句if else條件:只能是條件:只能是bool類型的值類型的值 選擇結(jié)構(gòu)選擇結(jié)構(gòu)switch (“cotton”)case “COTTON”: case “cotton”: break;case 值3: case 值4: break;switchcase 表達(dá)式可以是表達(dá)式可以是int、字符或字、字符或字符串符串C#不允許從一個不允許從一個case塊繼塊繼續(xù)執(zhí)行到下一個續(xù)執(zhí)行到下一個case塊。每塊。每個個case塊必須以一個跳轉(zhuǎn)控塊必須以一個跳轉(zhuǎn)控制語句制語句break、goto或或retu
54、rn結(jié)束結(jié)束多個多個case標(biāo)簽可以對應(yīng)一個標(biāo)簽可以對應(yīng)一個代碼塊代碼塊循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)用于對一組命令執(zhí)行一定的次數(shù)或反循環(huán)結(jié)構(gòu)用于對一組命令執(zhí)行一定的次數(shù)或反復(fù)執(zhí)行一組命令,直到指定的條件為真。復(fù)執(zhí)行一組命令,直到指定的條件為真。循環(huán)結(jié)構(gòu)的類型循環(huán)結(jié)構(gòu)的類型 while 循環(huán)循環(huán)do 循環(huán)循環(huán)for 循環(huán)循環(huán)foreach 循環(huán)循環(huán)條件:只能是條件:只能是bool類型的值類型的值 while 循環(huán)反復(fù)執(zhí)行指定的語句,直到指定的循環(huán)反復(fù)執(zhí)行指定的語句,直到指定的條件為真條件為真語法語法 :while (條件條件) / 語句語句break 語句可用于退出循環(huán)語句可用于退出循環(huán)contin
55、ue 語句可用于語句可用于跳過當(dāng)前循環(huán)并開始下跳過當(dāng)前循環(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) 這種循環(huán)用于將某個語句或語句塊重復(fù)執(zhí)行預(yù)定這種循環(huán)用于將某個語句或語句塊重復(fù)執(zhí)行預(yù)定
56、次數(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;/ 存放標(biāo)點符號的個數(shù)存放標(biāo)點符號的個數(shù)int Punctuations = 0;/ 用戶提供的輸入
57、用戶提供的輸入 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+;/ 檢查標(biāo)點符號檢查標(biāo)點符號if(char.IsPunctuation(ch) Punctuations+;Conso
58、le.WriteLine(“字母個數(shù)為:字母個數(shù)為: 0, Letters);Console.WriteLine(“數(shù)字個數(shù)為:數(shù)字個數(shù)為: 0, Digits);Console.WriteLine(“標(biāo)點符號個數(shù)為:標(biāo)點符號個數(shù)為: 0, Punctuations);為所有計數(shù)器設(shè)置初始值接受輸入對輸入的每一個字符都進行循環(huán)使用了所有輸入的字符之后,循環(huán)自動終止using System;public class WriteTestpublic static void Main() int array = 1, 2, 3, 4, 5 ; foreach (int item in array)
59、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#的預(yù)處理指令的預(yù)處理指令2-1預(yù)處理指令是預(yù)處理指令是C#編譯器在詞法分析階段讀取編譯器在詞法分析階段讀取的語句。這些語句可以指示編譯器包含或不的語句。這些語句可以指示編譯器包含或不包含某些代碼,甚至可以根據(jù)預(yù)處理指令的包含某些代碼,
60、甚至可以根據(jù)預(yù)處理指令的值終止編譯。值終止編譯。預(yù)處理指令由字符預(yù)處理指令由字符#標(biāo)識,并且字符標(biāo)識,并且字符#必須是必須是該行的第一個非空字符。該行的第一個非空字符。 預(yù)處理指令最常見的三個用途是:完成條件預(yù)處理指令最常見的三個用途是:完成條件編譯、增加診斷來報告錯誤和警告、定義代編譯、增加診斷來報告錯誤和警告、定義代碼域。碼域。 C#的預(yù)處理指令的預(yù)處理指令2-2 C#預(yù)處理命令預(yù)處理命令說明說明#define#undef用于定義一個符號,后取消對一個符號得定用于定義一個符號,后取消對一個符號得定義。如果定義了一個符號,那么在義。如果定義了一個符號,那么在#if指令中指令中使用時這個符號計算為使用時這個符號計算為true。#
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024蘋果產(chǎn)業(yè)鏈金融風(fēng)險防控合作協(xié)議3篇
- 2025年度林地林木種植與生態(tài)修復(fù)合同2篇
- 2024食堂食材的采購合同協(xié)議
- 2025賓館客房銷售數(shù)據(jù)共享與處理合同模板3篇
- 2025年度特色美食研發(fā)與酒店合作合同3篇
- 2025年度豬欄工程總承包及生態(tài)環(huán)保合同4篇
- 2025年度智能家居與安防系統(tǒng)一體化合同2篇
- 2025年4-甲基咪唑項目可行性研究報告
- 2025個人收藏品交易合同參考樣本4篇
- 汽車配件購銷合同范文
- 貴州省2024年中考英語真題(含答案)
- 施工項目平移合同范本
- 北師大版八年級上冊數(shù)學(xué)期中綜合測試卷(含答案解析)
- 幼兒園創(chuàng)意美勞培訓(xùn)
- 同濟大學(xué)第四版線性代數(shù)課后習(xí)題答案
- 醫(yī)療領(lǐng)域人工智能技術(shù)應(yīng)用的倫理與法規(guī)
- 工地春節(jié)停工復(fù)工計劃安排
- 美容面部皮膚知識課件
- 胰島素注射的護理
- 腦梗死健康宣教的小講課
評論
0/150
提交評論