C#入門經(jīng)典教程--1.ppt

收藏

編號:117262606    類型:共享資源    大?。?span id="iuigcg0" class="font-tahoma">4.81MB    格式:PPT    上傳時間:2022-07-08
15
積分
關(guān) 鍵 詞:
C# 入門 經(jīng)典 教程
資源描述:
第1章 C#與NET平臺介紹 本章目標,了解.NET Framework 的結(jié)構(gòu) 理解.NET Framework 的基本概念 CLR JIT CTS MSIL 了解 .NET Framework 命名空間 了解C#程序的基本結(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ù)雜性,許多程序員都試圖尋找一種新的語言,希望能在功能與效率之間找到一個更為理想的權(quán)衡點。 VB以犧牲靈活性的代價來提高效率??墒沁@些靈活性正是C/C+程序員所需要的。這些解決方案對編程人員的限制過多(如屏蔽一些底層代碼控制的機制),所提供的功能難以令人滿意。這些語言無法方便地同早先的系統(tǒng)交互,也無法很好地和當前的網(wǎng)絡(luò)編程相結(jié)合。,C#語言的特點: C#語言是Microsoft發(fā)布的一種全新的編程語言,是其.Net戰(zhàn)略的一枚重要棋子。 C#語言是面向?qū)ο蟮摹F(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者直接了解面向?qū)ο缶幊痰母鞣N概念,學習現(xiàn)代的編程思想和手段。,2 .NET代碼的編譯 語言特定的編譯器和運行庫,代碼 被執(zhí)行,IL + 元數(shù)據(jù),C L R,IL 和 CLR 的使用 Intermediate Language Common Language Runtime,編譯執(zhí)行 .NET 程序,Microsoft 中間語言,MSIL + 元數(shù)據(jù),機器 代碼,代碼 被執(zhí)行,CLR,MSIL,幫助語言實現(xiàn)互操作,IL 不是字節(jié)代碼,但很接近字節(jié)代碼。因此,執(zhí)行應(yīng)用程序時,IL 到機器碼的轉(zhuǎn)換速度非???!,通過 CLR將 MSIL 轉(zhuǎn)換為具體 CPU 的代碼,CPU 無關(guān)的指令集,語言 編譯器,.NET 源 代碼,程序集,client.exe,client.exe,clientlib.dll,client.exe,module,IL語言范例,IL_0000: nop IL_0001: call IL_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,通用語言運行時CLR,.NET的語言互操作性: 不同語言編寫的代碼可互相調(diào)用 C#的平臺移植性: 框架 JIT編譯器(Just In Time, 即時編譯器),3 .NET Framework 簡介,.NET Framework類似于JVM .NET Framework 兩個主要組件: 通用語言運行時 (CLR) 統(tǒng)一的類庫集 .NET的類庫: 線程 文件輸入/輸出 (I/O) 數(shù)據(jù)庫支持 XML 解析 數(shù)據(jù)結(jié)構(gòu),.NET Framework 的體系結(jié)構(gòu),Visual Studio .NET,CLR通用語言運行時 (CLR),Base Class Library: IO, Drawing, Threading,Data and XML,XML Web services,Windows Forms,Web Forms,通用語言規(guī)范(CLS),VB,C+,C#,JScript,操作系統(tǒng),.Net Framework 類庫 (FCL),CLS和CTS,通用語言規(guī)范 CLS Common Language Specification 規(guī)定所有 .NET 語言都應(yīng)遵循的規(guī)則 生成可與其他語言互操作的應(yīng)用程序 通用類型系統(tǒng) (Common Type System, CTS) 包含標準數(shù)據(jù)類型 包含準則集,CLS、CTS 和 MSIL 緊密配合以實現(xiàn)語言互操作性,命名空間就像在文件系統(tǒng)中一個文件夾容納多個文件一樣,可以看作某些類的一個容器。通過把類放入命名空間可以把相關(guān)的類組織起來,并且可以避免命名沖突。命名空間既用作程序的“內(nèi)部”組織系統(tǒng),也用作“外部”組織系統(tǒng)(一種向其他程序公開自己擁有的程序元素的方法) 使用命名空間:using 類似#include,4 命名空間,1.H class A ,2.H class A ,3.cpp #include “1.h” #include “2.h” .,3.cpp class A class A ,namespace a1 class A ,namespace a2 class A ,3.cs using a1; using a2; a1.A a2.A,常用命名空間,5 創(chuàng)建“Hello World”應(yīng)用程序,單擊“開始”“程序”“Microsoft Visual Studio .NET 2005”“Microsoft Visual Studio .NET 2005” 此時將打開 VS.NET 2005 的起始頁 要創(chuàng)建 C# 控制臺應(yīng)用程序,請從列表中選擇 “創(chuàng)建建”“項目”。此時將打開“新建項目”窗口 選擇“Visual C# 項目”作為項目類型,選擇“控制臺應(yīng)用程序”作為模板,C# 模板,Console.WriteLine(“Hello World“);,輸出,HelloWorld.csproj AssemblyInfo.cs Program.cs,“Hello World”應(yīng)用程序文件,編譯和執(zhí)行 C# 應(yīng)用程序,要生成 C# 項目,請從菜單中選擇“生成” “生成解決方案” 該過程將編譯項目中包括的所有文件,編譯結(jié)果顯示在“輸出”窗口中 如果結(jié)果顯示“生成: 1 成功或最新,0失敗,0被跳過”,則說明已經(jīng)成功生成,然后即可交付該應(yīng)用程序,要運行剛才生成的應(yīng)用程序,請從菜單中選擇“調(diào)試”“開始執(zhí)行(不調(diào)試)” 輸出結(jié)果顯示在 VS.NET 控制臺窗口中,C# 應(yīng)用程序文件夾結(jié)構(gòu),Visual Studio .NET 2005 創(chuàng)建一個與項目同名的文件夾,此處為“HelloWorld” 該文件夾包含項目文件“HelloWorld.csproj”和其他關(guān)聯(lián)文件 每個新項目都創(chuàng)建了 bin、obj和Properties 三個文件夾。 Bin和obj這兩個文件夾下都有一個 Debug 子目錄,其中包含可執(zhí)行文件 HelloWorld.exe 在“解決方案資源管理器”中啟用“顯示所有文件”選項,可查看“HelloWorld”項目的結(jié)構(gòu),/這是用 C# 編寫的一個簡單的 HelloWorld 程序 using System; namespace Notepad class HelloWorld static void Main() Console.WriteLine(“Hello World“); ,聲明 HelloWorld 類,描述代碼的注釋,Hello World 程序,程序入口點, Main 的返回類型為 void,控制臺類的 WriteLine() 方法用于顯示輸出結(jié)果,導(dǎo)入 System 命名空間,聲明命名空間 Notepad,將文件保存為 *.cs,說明: 1. 程序一般包括以下幾部分: 名稱空間的引用:使用using關(guān)鍵字指明引用的名稱空間。 名稱空間的聲明:使用namespace關(guān)鍵字聲明名稱空間。 類:使用class關(guān)鍵字聲明類。 Main方法:Main方法是C# 程序的入口。 2. 類中包含了程序所要用到的數(shù)據(jù)和所要執(zhí)行的方法的定義。每個類中可以有: (1)變量聲明 (2)構(gòu)造函數(shù) (3)方法 (4)屬性 (5)事件 3. 一個文件中可以有1個或者多個類。 4. 所有語句都以分號“;“結(jié)束。,C#語言基礎(chǔ),第2章,目標,在C#中定義變量和常量 使用C#中的基本數(shù)據(jù)類型 理解裝箱和拆箱的概念 使用C#中的運算符,選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 定義和使用數(shù)組,了解結(jié)構(gòu)和枚舉 了解C#中的預(yù)處理指令 理解C#中常用的字符串處理方法,第一個 C#程序 :HelloWorld,using System; class HelloWorld static void Main( ) Console.WriteLine(“Hello, World!”); ,HelloWorld.cs,第一個 C#程序 :HelloWorld,1: using System;,第 1 行:,using 關(guān)鍵字 用來引用.NET框架類庫中的資源 通常在程序文件的開頭使用 如果程序中需要多種資源,可以使用多次using System 命名空間 System命名空間提供了構(gòu)建應(yīng)用程序所需的系統(tǒng)統(tǒng)能的訪問,第一個 C# 程序 :HelloWorld,2: class HelloWorld 3: 8: ,第 2,3,8 行:,類 在C#或其他面向?qū)ο笳Z言中,需要編寫類 使用關(guān)鍵字class定義一個類,類的內(nèi)容放在一對 中 示例中定義了一個名為HelloWorld的類,第一個 C# 程序 :HelloWorld,4: static void Main( ) 5: 7: ,第 4,5,7 行:,Main 方法 Main 方法是應(yīng)用程序的入口點,編譯器將由該處開始執(zhí)行程序 方法體也放在一對 中 每個C#的應(yīng)用程序都必須包含Main方法,4: static void Main( ) 5: 7: ,第 4,5,7 行:,Main方法 static表示Main方法是一個全局方法 void表示Main方法沒有任何返回值,即返回值是空 參數(shù)放在小括號中定義。此處括號內(nèi)沒有內(nèi)容,表明Main方法沒有任何參數(shù),第一個 C# 程序 :HelloWorld,6: Console.WriteLine(“Hello, World!”);,第 6 行:,語句 在C#中要執(zhí)行的指令 語句之間用;分隔,編譯器通過分號來區(qū)分多個語句 使用大括號 標識某個代碼塊的開始和結(jié)束,從而可以對語句進行組合。大括號必須成對匹配。,第一個 C# 程序 :HelloWorld,6: Console.WriteLine(“Hello, World!”);,第 6 行:,語句 HelloWorld程序的主要目的就是在屏幕上顯示一條問候 WriteLine方法用來將問候語寫到標準輸出設(shè)備上。 Console代表標準輸出設(shè)備- 屏幕,它屬于System命名空間 WriteLine方法是Console類的方法。訪問類或?qū)ο蟮姆椒ㄊ褂?點取符.來完成。 字符串用雙引號“ ”表示 字符串“Hello,World”是WriteLine方法的參數(shù),表示屏幕輸出 的內(nèi)容,第一個 C# 程序 :HelloWorld,系統(tǒng)預(yù)定義類型,系統(tǒng)預(yù)定義類型,字面量,int: int iMax = int.MaxValue; int pVal = int.Parse(“100”); short i16 = 50; int i32 = i16; i16 = i32; 錯誤 i16 = (short)i32; decimal decimal iRate = 3.9834M; iRate = decimal.Round(iRate, 2); /四舍五入 iRate = decimal.Remainder(512.0M, 51.0M);,bool bool bt = (bool)1; /錯誤 char string 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,double float f = 24567.66f; double d = 124.45; If(Single.IsNaN(1/0) 使用Parse轉(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 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.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() :比較兩個字符串的值是否相等 ToLower():將字符串轉(zhuǎn)換成小寫形式 IndexOf():查找某個字符在字符串中的位置 SubString():從字符串中截取子字符串 Join():連接字符串 Split():分割字符串 Trim():去掉字符串兩邊的空格 ,實例,將一文件名的擴展名改為.dat。例:1.txt改為1.dat,using System; using System.Collections.Generic; using 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 常用方法應(yīng)用1,已有如下代碼,按要求增加功能:,static void Main(string args) string email; / 電子郵件地址 Console.WriteLine(“請輸入你的郵箱:“); email = Console.ReadLine(); Console.WriteLine(“你的郵箱是 0“, email); ,需實現(xiàn)的功能: 1、 輸入 yes 時,程序循環(huán)執(zhí)行 2、 兼容以下各種形式 yes(YES、yes、 YeS ) 3、 提取郵箱的用戶名,using System; 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 = Console.ReadLine(); if (input.ToUpper() = “YES“) continue; else break; ,while (true),String 常用方法應(yīng)用2,輸入一個字符串,輸出每個單詞,重新用下劃線連接輸出,使用 Split() 方法分割字符串 使用 Join() 方法連接字符串,Split()方法分割字符串,代碼分析,splitStrings = inputString.Split( );,/ 將分割后的字符串使用下劃線連接在一起 joinString = string.Join(“_“, splitStrings);,返回值為 字符串數(shù)組,字符串變量名,參數(shù):分隔符(char型),返回字符串,靜態(tài)方法,參數(shù)1:連接符 參數(shù)2:字符串數(shù)組,關(guān)鍵代碼:,Join()方法連接字符串,using System; class Program static void Main(string args) string inputString; inputString = Console.ReadLine(); inputString = 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 = “李四“; Console.WriteLine(“My name is 0 ,I am 1 “, name,18);,格式字符串,變量列表,String類的Format()方法用來格式化字符串,關(guān)鍵代碼:,record = string.Format( “姓名:0n出生年月:1n身高:2n 血型:3n星座:4n最喜歡的食物:5“, name, birthday, height, bloodType, planet, favourFood); Console.WriteLine(“n這是你的個人檔案:“); Console.WriteLine(record);,參數(shù)與 WritLine() 方法相似,Format() 的語法小結(jié),string myString = string.Format(“格式字符串“, 參數(shù)列表);,string myString = string.Format (“0 乘以 1 等于 2 “, 2, 3, 2*3);,格式字符串,代表,參數(shù)列表,2乘以3等于6,包括占位符x,小結(jié),補充下劃線處的占位符,輸出五個成語,string yi = “一“; string er = “二“; string san = “三“; 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);,枚舉,access modifiers enum :enum_base enum body,class MyApp enum Fabric : int Cotton = 1, Silk = 2, Wool = 4 static 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, 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(typeof(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 (“整型值 = “ + n2); Console.WriteLine (“字符串值 = “ + str); Console.WriteLine (“浮點值 = “ + n3); ,變量中存儲的值取決于該變量的類型,常量,static void Main(string args) / PI常量PI const 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 秒“, period); ,聲明常量,在表達式中使用常量,const 關(guān)鍵字用于聲明常量,數(shù)組,數(shù)組是同一數(shù)據(jù)類型的一組值 數(shù)組屬于引用類型,因此存儲在堆內(nèi)存中 數(shù)組元素初始化或給數(shù)組元素賦值都可以在聲明數(shù)組時或在程序的后面階段中進行 語法: 數(shù)據(jù)類型, 數(shù)組名稱 = new 類型 n,; int arrayHere = new int 6;,數(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; icount; i+) Console.WriteLine(“請輸入第 0 個乘客的姓名 “,i+1); namesi=Console.ReadLine(); Console.WriteLine(“已登機的乘客有: “); / 用 foreach 循環(huán)顯示姓名 foreach(string disp in names) Console.WriteLine(“0“, disp); ,數(shù)組聲明,初始化數(shù)組元素的循環(huán),顯示輸出的循環(huán),一維數(shù)組和多維數(shù)組都屬于矩形數(shù)組,而C#所特有的不規(guī)則數(shù)組是數(shù)組的數(shù)組,在它的內(nèi)部,每個數(shù)組的長度可以不同,就像一個鋸齒形狀。 (1)不規(guī)則數(shù)組的聲明 語法形式: type arrayName ; 方括號 的個數(shù)與數(shù)組的維數(shù)相關(guān)。 例如: int jagged ; / jagged是一個int類型的二維不規(guī)則數(shù)組 (2)創(chuàng)建數(shù)組對象 以二維不規(guī)則數(shù)組為例:,3不規(guī)則數(shù)組,struct structEx public int structDataMember; public void structMethod1() /structMethod1 實現(xiàn) ,自定義數(shù)據(jù)類型 可以在其內(nèi)部定義方法 無法實現(xiàn)繼承 屬于值類型 主要結(jié)構(gòu):,struct student public int stud_id; public string stud_name; public float stud_marks; public void show_details() /顯示學生詳細信息 ,結(jié)構(gòu),數(shù)據(jù)成員,方法,所有與 Student 關(guān)聯(lián)的詳細信息都可以作為一個整體進行存儲和訪問,C# 的基本數(shù)據(jù)類型,C#中的數(shù)據(jù)類型分為兩個基本類別 值類型 表示實際數(shù)據(jù) 只是將值存放在內(nèi)存中 值類型都存儲在堆棧中 int、char、結(jié)構(gòu) 引用類型 表示指向數(shù)據(jù)的指針或引用 包含內(nèi)存堆中對象的地址 為 null,則表示未引用任何對象 類、接口、數(shù)組、字符串,C# 的基本數(shù)據(jù)類型,static void Main(string args) / 聲明一個值類型的整型數(shù)據(jù)類型 int value = 130; Console.WriteLine(“該變量的初始值為 0“, value); Test(value); / 由于該數(shù)據(jù)類型屬于值類型,所以將恢復(fù)其初始值 Console.WriteLine(“該變量的值此時為 0“, value); static void Test(int byVal) int t = 20; byVal = t* 30; ,將value的初始值傳遞給Test()方法,不反映已經(jīng)改變的val值,而保留原始值,C# 的基本數(shù)據(jù)類型,static void Main(string args) DataType objTest = new DataType (); objTest.Value = 130; / 傳遞屬于引用類型的對象 Test(objTest); / 由于該數(shù)據(jù)類型屬于引用類型,所以會考慮新處理的值 Console.WriteLine(“變量的值為 0“, objTest.Value); static void Test(DataType data) int t = 20; data.Val = temp * 30; ,將 DataTypeTest 的引用傳遞給 Test(),被傳遞的value在Test()中改變,反映已經(jīng)改變的value值,class DataType public int Value; ,引用類型和值類型,System.Object方法,引用類型和值類型的內(nèi)存分配,值類型存儲在運行棧,引用類型存儲在托管堆 Apparel myApparel = new Apparel(); Apparel myApparel1 = myApparel;,Class Apparel public double Price = 250.0; public string FabType = “Syn”; ,棧,托管堆,裝箱與拆箱,裝箱即將值類型轉(zhuǎn)換為引用 int age = 17; Object refAge = age 拆箱即將引用類型轉(zhuǎn)換為值類型。 int newAge = (int)refAge; double newAge = (double)refAge; /錯誤,要具有相同類型,運算符和表達式,運算符和表達式,運算符和表達式,運算符和表達式,運算符和表達式 9-6,賦值運算符 (=),變量 = 表達式; 例如: 身高 = 177.5; 體重 = 78; 性別 = “m”;,運算符和表達式 9-7,一元運算符 (+/-),Variable +; 相當于 Variable = Variable + 1; Variable -; 相當于 Variable = Variable - 1;,運算符和表達式,運算符和表達式,C# 運算符的優(yōu)先級,選擇結(jié)構(gòu),語法: if () else ,選擇結(jié)構(gòu)用于根據(jù)表達式的值執(zhí)行語句,if else,條件:只能是bool類型的值,選擇結(jié)構(gòu),switch (“cotton”) case “COTTON”: case “cotton”: break; case 值3: case 值4: break; ,switchcase,表達式可以是int、字符或字符串 C#不允許從一個case塊繼續(xù)執(zhí)行到下一個case塊。每個case塊必須以一個跳轉(zhuǎn)控制語句break、goto或return結(jié)束 多個case標簽可以對應(yīng)一個代碼塊,循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)用于對一組命令執(zhí)行一定的次數(shù)或反復(fù)執(zhí)行一組命令,直到指定的條件為真。 循環(huán)結(jié)構(gòu)的類型 while 循環(huán) do 循環(huán) for 循環(huán) foreach 循環(huán),條件:只能是bool類型的值,while 循環(huán)反復(fù)執(zhí)行指定的語句,直到指定的條件為真 語法 : while (條件) / 語句 break 語句可用于退出循環(huán) continue 語句可用于跳過當前循環(huán)并開始下一循環(huán),while 循環(huán),dowhile 循環(huán),dowhile 循環(huán)與 while 循環(huán)類似,二者區(qū)別在于 dowhile 循環(huán)中即使條件為假時也至少執(zhí)行一次該循環(huán)體中的語句。 語法 : do / 語句 while (條件),for 循環(huán),for 循環(huán)要求只有在對特定條件進行判斷后才允許執(zhí)行循環(huán) 這種循環(huán)用于將某個語句或語句塊重復(fù)執(zhí)行預(yù)定次數(shù)的情形 語法 : for (初始值; 條件; 增/減) /語句 ,foreach 循環(huán) 2-1,foreach 循環(huán)用于遍歷整個集合或數(shù)組 語法: foreach (數(shù)據(jù)類型 元素(變量) in 集合或者數(shù)組) /語句 ,foreach 循環(huán)2-2,static void Main(string args) / 存放字母的個數(shù) int Letters = 0; / 存放數(shù)字的個數(shù) int Digits = 0; / 存放標點符號的個數(shù) int Punctuations = 0; / 用戶提供的輸入 string instr; Console.WriteLine(“請輸入一個字符串 “); instr = Console.ReadLine(); / 聲明 foreach 循環(huán)以遍歷輸入的字符串中的每個字符。 foreach(char ch in instr) / 檢查字母 if(char.IsLetter(ch) Letters+; / 檢查數(shù)字 if(char.IsDigit(ch) Digits+; / 檢查標點符號 if(char.IsPunctuation(ch) Punctuations+; Console.WriteLine(“字母個數(shù)為: 0“, Letters); Console.WriteLine(“數(shù)字個數(shù)為: 0“, Digits); Console.WriteLine(“標點符號個數(shù)為: 0“, Punctuations); ,為所有計數(shù)器設(shè)置初始值,接受輸入,對輸入的每一個 字符都進行循環(huán),使用了所有輸入的字符 之后,循環(huán)自動終止,using System; public class WriteTest public static void Main() int array = 1, 2, 3, 4, 5 ; foreach (int item in array) Console.WriteLine(item); ,using System; public class WriteTest public static void Main() int array = 1, 2, 3, 4, 5 ; foreach (int item in array) item += item; Console.WriteLine(item); ,C#的預(yù)處理指令2-1,預(yù)處理指令是C#編譯器在詞法分析階段讀取的語句。這些語句可以指示編譯器包含或不包含某些代碼,甚至可以根據(jù)預(yù)處理指令的值終止編譯。 預(yù)處理指令由字符#標識,并且字符#必須是該行的第一個非空字符。 預(yù)處理指令最常見的三個用途是:完成條件編譯、增加診斷來報告錯誤和警告、定義代碼域。,C#的預(yù)處理指令2-2,#define CLIENT #define DEBUG using System; public class MyApp public static void Main() #if DEBUG & INHOUSE #warning Debug in on. #elif DEBUG & CLIENT #error Debug not allowed in Client Code. #endif ,控制臺輸入和輸出,數(shù)據(jù)輸入(Read,ReadLine) Console.Read ()方法 Console.Read方法用來從控制臺讀取一個字符,其定義如下: Public static int Read(); Read方法返回所讀取的字符的Unicode編碼值。 注意: Read方法的返回變量是32位的整數(shù),如果需要得到輸入的字符,則必須通過數(shù)據(jù)類型的顯式轉(zhuǎn)換才能得到相應(yīng)的字符。,控制臺輸入和輸出,Console.Read () /ReadTest.cs using System; public class ReadTest public static void Main() int i; char ch; i=Console.Read(); ch=(char) i; /顯式類型轉(zhuǎn)換 Console.WriteLine(i); Console.WriteLine(ch); ,運行結(jié)果: A 65 A,控制臺輸入和輸出,Console.ReadLine ()方法 Console.ReadLine方法用來從控制臺讀取一行字符,定義如下: Public static string ReadLine(); Read方法返回所讀取一行字符的字符串。一般情況下,一行輸入是指從輸入一個字符開始,遇到回車符號為止。,控制臺輸入和輸出,/ReadLine.cs using System; using System.Globalization; public class ReadTest public static void Main() int i; double d; string str; str=Console.ReadLine(); /由控制臺輸入整數(shù)字符串 i=int.Parse(str); /整數(shù)字符串轉(zhuǎn)換為整數(shù) Console.WriteLine(i); str=Console.ReadLine(); /由控制臺輸入浮點字符串 d=double.Parse(str); /浮點字符串轉(zhuǎn)換為浮點數(shù) Console.WriteLine(d); ,運行結(jié)果: 1234 1234 123.456 123.456,控制臺輸入和輸出,數(shù)據(jù)輸出(Write WriteLine) Console.Write ()方法 Console.Write方法用來向控制臺輸出一個字符,但控制臺的光標不會移到下一行。其定義如下: public static void Write(XXX value); public static void Write(string format,object o1,); 注意:格式化format同格式化函數(shù)Format中的格式化串類似,其格式如下: N,M:formatstring 其中,字符N表示輸出變量的序號,M表示輸入變量在控制臺中所占的字符空間,如果這個數(shù)字為負數(shù),則按照左對齊的方式輸出,若為正數(shù),則按照右對齊方式輸出。,控制臺輸入和輸出,/WriteTest.cs using System; public class WriteTest public static void Main() int i=32767; double d=456.56789; /由控制臺。按照十進制輸出整數(shù)及浮點數(shù) Console.Write(“i=0 x0,8:Xtd=1,10:F3”,i,d); /由控制臺。按照十六進制輸出整數(shù) Console.Write(“i=0 x0,-8:Xtd=1,-10:F3”,i,d); 輸出結(jié)果: i=0 x 7FFF d= 456.568i=0 x7FFF d=456.568,控制臺輸入和輸出,Console.WriteLine()方法 Console.WriteLine方法用來向控制臺輸出一行字符,即WriteLine方法在輸出信息之后,在信息的尾部自動添加“rn”字符,表示回車換行。 public static void WriteLine(XXX value); public static void WriteLine(string format,object o1,); 注意:格式化format同WriteLine中的格式化參數(shù)完全一樣。,控制臺輸入和輸出,/WriteLine.cs using System; public class WriteTest public static void Main() int i=32767; double d=456.56789; /格式化輸出 Console.WriteLine(“i=0 x0,8:Xtd=1,10:F3”,i,d); Console.WriteLine(“i=0 x0,-8:Xtd=1,-10:F3”,i,d); Console.WriteLine(“i=0 x0,-8:Dtd=1,-10:C3”,i,d); 輸出結(jié)果: i=0 x 7FFF d= 456.568 i=0 x7FFF d=456.568 i=32767 d=¥456.568,第3章 C#面向?qū)ο笤O(shè)計,結(jié)構(gòu)程序設(shè)計的不足數(shù)據(jù)與方法分離,void SpeedUp(int ,double speed = 0;,結(jié)構(gòu)程序設(shè)計的不足代碼不能重用,void main() int doorN_car1 = 2; int color_car1 = 0; int speed_car1 = 100; printf(“%d %d %dn“, doorN_car1, color_car1, speed_car1); int doorN_car2 = 4; int color_car2 = 1; int speed_car2 = 80; printf(“%d %d %dn“, doorN_car2, color_car2, speed_car2); ,C#的面向?qū)ο筇匦?所有東西都是對象:變量和方法的集合。 初級特性:OO最基本的概念,即類和對象。 中級特性:OO最核心的概念,即封裝、繼承和多態(tài)。 高級特性:由初級特性和中級特性引出的一些問題,如構(gòu)造函數(shù)的使用、覆蓋的規(guī)則、靜態(tài)變量和函數(shù)等。,初級特性,面向?qū)ο蠹夹g(shù)最基本的概念是類和對象: 類是一個樣板,以操作、表示和算法的形式完整地定義了一組對象的行為。它通常也是面向?qū)ο笳Z言中的模塊化、封裝和數(shù)據(jù)抽象的基礎(chǔ)。 對象是類的一個實例,是一個軟件單元,它由一組結(jié)構(gòu)化的數(shù)據(jù)和在其上的一組操作構(gòu)成。,抽象數(shù)據(jù)類型,類實際上為實際的物體在計算機中定義了一種抽象數(shù)據(jù)類型。 抽象數(shù)據(jù)類型是僅由數(shù)據(jù)類型和可能在這個數(shù)據(jù)類型上進行的操作定義的。 使用者只能通過操作方法來訪問其屬性,不用知道這個數(shù)據(jù)類型內(nèi)部各種操作是如何實現(xiàn)的。,class Car public int doorN; public int color; public int speed; public void SpeedUp() speed += 10; class MyApp static void Main() Car car1; car1.doorN = 2; car1.color = 0; car1.speed = 100; Car car2; car2.doorN = 4; car2.color = 1; car2.speed = 80; ,public double speed;,面向?qū)ο蟪绦蛟O(shè)計封裝、代碼重用,3.2 類與對象,類:C#所有的代碼都是在某一個類中,因此不可能在類之外的全局區(qū)域有變量和方法。 對象:C#中的對象相當于一塊內(nèi)存區(qū)域,保存對象特有的類中所定義的數(shù)據(jù)。 引用:C#中對于對象的操作全部通過引用進行。,3.2.1 類的定義 類使用class關(guān)鍵字聲明。采用的形式為: 類修飾符 class 類名稱:基類以及實現(xiàn)的接口列表 類體 ;,類、對象和引用的聲明,聲明一個類:訪問修飾字 class 類名變量聲明,方法聲明 class Student long id; / 學號 char gender; /性別 int classID; / 班級號,注意不能用class作屬性名 void ChangeClass(int aClassID) /更改班級 聲明一個對象引用:類名引用名Student student; 創(chuàng)建一個對象:new 類構(gòu)造函數(shù) student = new Student(); /如果缺少這一步編譯器會報錯 使用對象:引用名. 變量名/方法名(參數(shù)) student.id = 200328013203194;,引用與對象舉例,引用類似于C+中的對象指針。但又有區(qū)別: 在C#中”引用“是指向一個對象在內(nèi)存中的位置,在本質(zhì)上是一種帶有很強的完整性和安全性的限制的指針。 當聲明某個類、接口或數(shù)組類型的一個變量時,變量的值總是某個對象的引用或者是null引用。 指針就是簡單的地址而已,而引用除了表示地址而外,還是被引用的數(shù)據(jù)對象的縮影,可以提供其他信息。 指針可以有+、-運算,引用不可以運算。,3.1.2 類的成員 1類的成員分類 常量:表示與該類相關(guān)聯(lián)的常量值。 字段:即該類的變量。 類型:用于表示一些類型,它們是該類的局部類型。 方法:用于實現(xiàn)可由該類執(zhí)行的計算和操作。 屬性:用于定義一些命名特性,通過它來讀取和寫入相關(guān)的特性。 事件:用于定義可由該類生成的通知。 索引器:使該類的實例可按與數(shù)組相同的(語法)方式進行索引。 運算符:用于定義表達式運算符,通過它對該類的實例進行運算。 實例構(gòu)造函數(shù):用于規(guī)定在初始化該類的實例時需要做些什么。 析構(gòu)函數(shù):用于規(guī)定在永久地放棄該類的一個實例之前需要做些什么。 靜態(tài)構(gòu)造函數(shù):用于規(guī)定在初始化該類自身時需要做些什么。,public class Furniture const double salesTax = .065; private double purchPrice; private string vendor, inventoryID; public Furniture(string vendor, string inventID, double purchPrice) this.vendor = vendor; this.inventoryID = inventID; this.purchPrice = purchPrice; public string MyVendor get return vendor; public double CalcSalesTax(double salePrice) return salePrice * salesTax; ,字段,構(gòu)造函數(shù),成員屬性,方法,2類成員的可訪問性,類或結(jié)構(gòu)的默認訪問類型是internal。 類中所有的成員,默認均為private。,class Furniture const double salesTax = .065; private double purchPrice; private string vendor, inventoryID; public Furniture(string vendor, string inventID, double purchPrice) this.vendor = vendor; this.inventoryID = inventID; this.purchPrice = purchPrice; publ
展開閱讀全文
溫馨提示:
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)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
提示  裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
關(guān)于本文
本文標題:C#入門經(jīng)典教程--1.ppt
鏈接地址:http://m.jqnhouse.com/article/117262606.html

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲