版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C#程序設(shè)計基礎(chǔ),$1 緒論,特點,結(jié)構(gòu)化程序設(shè)計 面向?qū)ο蟮某绦蛟O(shè)計 基于組件的程序設(shè)計 CORBA, Java EJB COM COM+/DCOM 桌面應(yīng)用 網(wǎng)絡(luò)應(yīng)用 Internet應(yīng)用,組成,.NET Framework環(huán)境結(jié)構(gòu),緒論,C#語言,C#語言,C#語言特性 簡潔的語法 精心的面向?qū)ο笤O(shè)計 與Web的緊密結(jié)合 完整的安全性與錯誤處理 版本處理技術(shù) 靈活性與兼容性,C#語言,C# 2.0 新增特性 泛型 可空類型 遍歷器(自學(xué)) 匿名方法(自學(xué)) 分部類型(自學(xué)),C#語言,C# 3.0 新增特性 類型推理 Lambda表達式 擴展方法 對象創(chuàng)建表達式 匿名類型 分部方法,緒論
2、,開始編寫C#應(yīng)用程序,第一個C# 應(yīng)用程序,using System; namespace P1_1 public class FirstProgram public static void Main(string args) Console.WriteLine(Welcome to .NET); ,Pascal大小寫和camel規(guī)則,標識符有兩種常用命名規(guī)則:Pascal大小寫和camel規(guī)則。 Pascal 大小寫:將標識符的首字母和后面連接的每個單詞的首字母都大寫。例如:BackColor 大小寫混合camel規(guī)則:標識符的首字母小寫,而每個后面連接的單詞的首字母都大寫。例如:back
3、Color Pascal規(guī)則:命名空間、類名、方法名等。 camel規(guī)則:字段,變量等。,C# 程序基本結(jié)構(gòu),命名空間 P10 類型、類和方法P10 程序主方法P11 程序注釋P12,命名空間,命名空間是c#代碼的基本組織形式,類、結(jié)構(gòu)等各種類型定義都包含在命名空間中,而命名空間也可以嵌套在另一個命名空間中,這就形成一個邏輯上的層次體系結(jié)構(gòu)。 作用 解決命名沖突問題 調(diào)用更加簡潔,程序注釋,多行注釋 /*第一行 第二行*/ 單行注釋 /這里是單行注釋 三行注釋 以后介紹,1.6 與用戶進行交互,控制臺交互程序 舉例演示,Windows應(yīng)用程序,舉例演示,C#程序設(shè)計基礎(chǔ),第二章 數(shù)據(jù)類型,C#
4、數(shù)據(jù)類型,值類型 簡單類型:整數(shù) 字符 實數(shù) 布爾 復(fù)合類型:結(jié)構(gòu) 枚舉,整數(shù)類型:sbyte、byte、short、ushort、int、uint、long、ulong和char。 布爾類型bool:表示的邏輯變量,只有兩種取值:“真”或“假”,采用“true”和“false”兩個值來表示。 字符類型包括數(shù)字字符、英文字母和表達符號等。 實數(shù)類型包括浮點類型和十進制類型: 浮點類型包括單精度類型(float)型和雙精度類型(double)。 十進制類型(decimal): 十進制類型適合應(yīng)用在不能接受舍入誤差的計算中。,整數(shù)、實數(shù)、字符和布爾類型,結(jié)構(gòu)類型,把一系列相關(guān)的變量組織成為一個單一
5、實體的類型稱為結(jié)構(gòu)類型,每一個變量稱為結(jié)構(gòu)的成員。 例:將一個點的x坐標和y坐標組成一個點結(jié)構(gòu)類型。結(jié)構(gòu)是使用struct關(guān)鍵字定義的,定義一個點結(jié)構(gòu)類型point的代碼如下: struct Point public int x,y; /定義字段 ,結(jié)構(gòu)舉例,using System; namespace Example class Program static void Main(string args) SPoint s1 = new SPoint(); s1.x = 0; s1.y = 0; s1.DisplayPoint(); SPoint s2 = s1; s2.x = 5; s2.
6、y = 10; s1.DisplayPoint(); struct SPoint public int x; public int y; public void DisplayPoint() Console.WriteLine(類變量c1: x=0, y=1, x, y); ,枚舉(enum)類型由一組命名常數(shù)組成,這組命名常數(shù)稱為枚舉列表;每一個枚舉類型都具有一個底層基本類型。 底層基本類型必須是內(nèi)置的有符號或無符號整數(shù)類型(如Int16、Int32或Int64)。枚舉元素的默認類型為int,并且在默認情況下,第1個元素的值為0,后續(xù)的元素依次遞增1。 例如,在下面的枚舉變量color中,R
7、ed=0、Green=1,依次類推。 enum colorRed,Green,Blue,White,Black; 在聲明枚舉變量時還可以指定底層的基本類型,例如下面的語句,指定long為底層的基本類型。 enum Range:long Max = 2147483648L,Min = 255L;,枚舉類型,枚舉舉例,/程序清單P2_5.cs: using System; namespace P2_5 class EnumSample public static void Main() Weekday w1; w1 = Weekday.Monday; Console.WriteLine(w1);
8、w1 = w1 + 1; Console.WriteLine(w1); w1 = (Weekday) 4; Console.WriteLine(w1); enum Weekday Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ,引用類型,類 與結(jié)構(gòu)類似,不同點為結(jié)構(gòu)是值類型,類是引用類型。 接口 應(yīng)用程序之間相互調(diào)用的協(xié)議,被調(diào)用一方在協(xié)議中對自已能提供的服務(wù)進行描述,另一方在調(diào)用之前,先檢查協(xié)議存在哪些服務(wù),其中哪些能滿足自已的要求。 委托 類似C+中的指針,用于封裝對一個或多個方法的引用。 數(shù)組 (在后面介紹)
9、,類舉例,using System; namespace Example class Program static void Main(string args) CPoint c1 = new CPoint(); c1.x = 0; c1.y = 0; c1.DisplayPoint(); CPoint c2 = c1; c2.x = 5; c2.y = 10; c1.DisplayPoint(); class CPoint public int x; public int y; public void DisplayPoint() Console.WriteLine(類變量c1: x=0,
10、y=1, x, y); ,i: 123,s,Hello world,int i = 123;,j: 123,t,int j = i;,string t = s;,string s = Hello world;,值類型與引用類型比較,內(nèi)存“堆?!焙汀岸选?“堆?!焙汀岸选笔沁\行庫對內(nèi)存進行組織的兩種方式。 堆棧內(nèi)存就像一系列堆疊越高的箱子。 堆內(nèi)存則像散布在房間里的一大堆箱子,而不像堆棧那樣每個箱子都嚴格地疊置在另一個箱子上方。每個箱子都有一個標簽,它標記了這個箱子是否使用。 創(chuàng)建一個新對象時,運行庫會查找一個空箱子,并把它分配給對象。對對象的引用存儲在堆棧上的一個局部變量中。運行庫將跟蹤對每一
11、個箱子的引用數(shù)量, (兩個變量可能引用同一個對象)。一旦最后一個引用消失,運行庫就將箱子標記為“未使用”。 所有值類型都是在堆棧上創(chuàng)建的,所有引用類型(對象)都是在堆上創(chuàng)建的。,類型轉(zhuǎn)換,值類型值類型 P40 低精度類型高精度類型:隱式轉(zhuǎn)換 高精度類型低精度類型:顯式轉(zhuǎn)換 引用類型引用類型 P43 派生類型基礎(chǔ)類型:隱式轉(zhuǎn)換 基礎(chǔ)類型派生類型:顯式轉(zhuǎn)換 Null 數(shù)組 值類型引用類型P45 值類型引用類型:隱式轉(zhuǎn)換(裝箱) 引用類型值類型:顯式轉(zhuǎn)換(拆箱),int i = 123; object o = i; int j = (int) o;,i: 123,o,System.Int32,裝箱,
12、j:,123,System.object,123,拆箱,System.Int32,裝箱與拆箱過程,數(shù)組,數(shù)組用于對同一類型的數(shù)據(jù)進行批量處理,它包含多個數(shù)據(jù)對象,這些對象叫做“數(shù)組元素”。數(shù)組元素的類型可以是值類型,也可以是引用類型,還可以把數(shù)組本身作為另一個數(shù)組的數(shù)組元素。,一維數(shù)組,定義:P36 T array-name; 初始化: array-name = new Tsize; 訪問數(shù)組元素: 定義 + 初始化 + 賦值:T array-name = const-exp;,一維數(shù)組使用,方法一 int array1 = new int3; array10 = 1; array11 = 2
13、; array12 = 4; 方法二 int array1 = new int31,2,4; int array1 = 1,2,4;,多維數(shù)組- 規(guī)則,定義:P37 T, array-name; T, array-name; 初始化: array-name = new Tsize1, size2; 訪問數(shù)組元素: , 定義 + 初始化 + 賦值:T, array-name = const-exp1, const-exp2;,多維規(guī)則數(shù)組使用,int, a = new int3,4;a1,1= 10; int, a = new int,0,0,0,0,1,1,2,2,2,3,4,5; int,
14、a = 0,0,0,0,1,1,2,2,2,3,4,5;,多維數(shù)組- 不規(guī)則,定義 P38 初始化 訪問數(shù)組元素 存儲子數(shù)組的地址,多維不規(guī)則數(shù)組使用,int b = new int3; b0= new int 4; b1= new int3; b2= new int 2;,數(shù)組舉例,using System; namespace P2_9 class MultiArraySample public static void Main() int, a = 0, 0, 1, 1 , 1, 1, 2, 2 , 2, 3, 4, 5 ; int b = new int3; b0 = new int4
15、; b1 = new int3; b2 = new int2; Console.WriteLine(規(guī)則數(shù)組); Console.WriteLine(長度: 0, a.Length); Console.WriteLine(子數(shù)組長度: 0, 1rn, a.GetLength(0), a.GetLength(1); Console.WriteLine(不規(guī)則數(shù)組); Console.WriteLine(長度: 0, 1, b.Length, b.GetLength(0); /調(diào)用b.GetLength(1)將會出錯 Console.WriteLine(子數(shù)組長度: 0, 1, 2rn, b0.L
16、ength, b1.Length, b2.Length); ,a.Length與a.GetLength(0)都是數(shù)組第一維的長度,不能用其它整數(shù)調(diào)用GetLength方法。,C#程序設(shè)計基礎(chǔ),$3 成員、變量和常量,成員類型,字段 方法 嵌套成員,字段,字段存儲類所需要的數(shù)據(jù)。 可以是值類型,也可以是引用類型; 可以是系統(tǒng)預(yù)定義的類型,也可以是用戶自已定義的類、結(jié)構(gòu)和枚舉類型。 字段的命名遵循camel規(guī)則,一般為private類型。 舉例 Class BankCard Public uint amount; ,方法,方法是包含一系列語句的代碼塊,是類或結(jié)構(gòu)中用于執(zhí)行計算或其它行為的成員。 訪
17、問級別:public ,private等 返回類型:任何數(shù)據(jù)類型。 方法名:同一個類中唯一。 參數(shù)列表:包含在一對小括號中,多個參數(shù)間用逗號分割,不需要參數(shù)則用一對空的小括號。 方法體:大括號括起來的一段代碼。 方法聲明 修飾符 返回類型方法名稱(形式化參數(shù)表) 方法體 ,方法-參數(shù)類型,普通參數(shù) P52 無須特別定義 引用型參數(shù) P53 以關(guān)鍵字ref定義,采用引用傳遞,定義與使用時均加ref 實參調(diào)用前必須先初始化。 輸出型參數(shù)P53 以關(guān)鍵字out定義,采用引用傳遞,定義與使用時均加out 在方法體內(nèi)必須對參數(shù)賦值,實參使用前不需要先初始化。 數(shù)組型參數(shù)P53 以關(guān)鍵字params定義,
18、根據(jù)實參形式選擇引用傳遞或值傳遞,包含數(shù)量可變的參數(shù)。 方法中只允許定義一個數(shù)組型參數(shù),而且該參數(shù)必須位于參數(shù)列表中最后。 數(shù)組型參數(shù)所定義的數(shù)組必須是一維數(shù)組。 數(shù)組型參數(shù)不能同時既為引用型參數(shù)又為輸出型參數(shù)。,傳遞給數(shù)組型參數(shù)的實參可以是一個數(shù)組變量,也可以是多個數(shù)組元素變量。前者采用引用傳遞,后者采用值傳遞的方式。,參數(shù)傳遞種類,值傳遞 值傳遞值類型,如:void SquareIt(int x) 參數(shù)int x 是值類型。 值傳遞引用類型,如:void Change(int pArray) 數(shù)組pArray 為引用類型。 引用傳遞有以下兩種類型: 引用傳遞值類型,如:void Squar
19、eIt(ref int x) 引用傳遞引用類型,如:void Change(ref int pArray),值傳遞值類型參數(shù)示例,class PassingValByVal static void SquareIt(int x) x *= x; System.Console.WriteLine(SquareIt方法內(nèi)的n值: 0, x); static void Main() int n = 5; System.Console.WriteLine(調(diào)用SquareIt方法前的n值: 0, n); SquareIt(n); / 通過值來傳遞值 System.Console.WriteLine(調(diào)
20、用SquareIt方法后的n值: 0, n); ,該程序運行輸出: 調(diào)用SquareIt方法前的n值: 5 SquareIt方法內(nèi)的n值: 25 調(diào)用SquareIt方法后的n值: 5,值傳遞引用類型示例,class PassingRefByVal static void Change(int pArray) pArray0 = 888; / 將pArray的第一個元素賦值為888, 改變arr0 pArray = new int5 -3, -1, -2, -3, -4 ; / 引用新的數(shù)組,不改變arr System.Console.WriteLine(方法內(nèi)的數(shù)組第一元素: 0, pArr
21、ay0); static void Main() int arr = 1, 4, 5 ; System.Console.WriteLine(調(diào)用方法前的數(shù)組第一元素:0, arr0); Change(arr); System.Console.WriteLine(調(diào)用方法后的數(shù)組第一元素:0, arr0); ,該程序運行輸出: 調(diào)用方法前的數(shù)組第一元素:1 方法內(nèi)的數(shù)組第一元素: -3 調(diào)用方法后的數(shù)組第一元素:888,引用傳遞值類型示例,class PassingValByRef / 參數(shù)X的值通過關(guān)鍵字ref來傳遞,改變x的值,將會改變輸入的x的值 static void SquareIt(
22、ref int x) x *= x; System.Console.WriteLine(SquareIt方法內(nèi)的n值: 0, x); static void Main() int n = 5; System.Console.WriteLine(調(diào)用SquareIt方法前的n值: 0, n); SquareIt(ref n); / 通過ref關(guān)鍵字來傳遞變量引用. System.Console.WriteLine(調(diào)用SquareIt方法后的n值: 0, n); ,該程序運行輸出: 調(diào)用SquareIt方法前的n值: 5 SquareIt方法內(nèi)的n值: 25 調(diào)用SquareIt方法后的n值:
23、25,引用傳遞引用類型示例,class PassingRefByRef static void Change(ref int pArray) / 下面兩個數(shù)組賦值都將改變原始的元素 pArray0 = 888; / 將pArray的第一個元素賦值為 pArray = new int5 -3, -1, -2, -3, -4 ; / pArray 引用新的數(shù)組 System.Console.WriteLine(Change方法內(nèi)的數(shù)組第一元素: 0, pArray0); static void Main() int arr = 1, 4, 5 ; System.Console.WriteLine(
24、調(diào)用Change方法前的數(shù)組第一元素:0, arr0); Change(ref arr);/通過ref關(guān)鍵字來傳遞數(shù)組引用 System.Console.WriteLine(調(diào)用Change方法后的數(shù)組第一元素:0, arr0); ,該程序運行輸出: 調(diào)用Change方法前的數(shù)組第一元素:1 Change方法內(nèi)的數(shù)組第一元素: -3 調(diào)用Change方法后的數(shù)組第一元素:-3,數(shù)組型參數(shù)示例 P54,/程序清單P3_2.cs: using System; namespace P3_2 class ArrayParametersSample public static void Main() d
25、ouble d1 = 1; double d2 = 5; double d3 = 3; double ds = 1, 5, 3 ; CzMath c = new CzMath(); Console.Write(值傳遞排序: ); c.Sort(d1, d2, d3); Console.WriteLine(0 1 2, d1, d2, d3); Console.Write(引用傳遞排序: ); c.Sort(ds); Console.WriteLine(0 1 2, ds0, ds1, ds2); ,class CzMath /交換兩個數(shù)的值 public void Swap(ref doubl
26、e x, ref double y) double temp = x; x = y; y = temp; /對三個數(shù)進行排序 public void Sort(params double array) if (array.Length != 3) return; if (array0 array1) Swap(ref array0, ref array1); if (array1 array2) Swap(ref array1, ref array2); if (array0 array1) Swap(ref array0, ref array1); ,方法-標識與重載,方法標識 方法名 參數(shù)
27、列表(參數(shù)數(shù)量與參數(shù)類型) 返回值? 方法重載 方法名相同 參數(shù)列表不同,嵌套成員,一個程序集或命名空間中的復(fù)合類型可以并列定義也可以嵌套定義,二者之間的區(qū)別是訪問限制的不同。采用嵌套定義時,外部的其他類對嵌套類型的使用將受到限制。 只有將嵌套類型的訪問限制修飾符設(shè)置為public,外部定義的其他類才能使用該類中的嵌套類型。,3.2 成員訪問限制,訪問限制修飾符 私有privateP57 限制為私有的,訪問僅限于包含類型。 用于修飾類或結(jié)構(gòu)的成員 類和結(jié)構(gòu)成員默認為private修飾符。 在命名空間下直接定義的類型(類、結(jié)構(gòu)、接口、枚舉、委托等),不允許使用private修飾符。,訪問限制修飾
28、符,公有public 表示公有訪問,訪問不受限制。 可用于類和結(jié)構(gòu)的成員。 可以用于命名空間下直接定義的類型(類、結(jié)構(gòu)等) 接口(interface)和枚舉(enum)成員默認為public訪問修飾符,且不能顯示使用修飾符。,訪問限制修飾符,保護protectedP58 限制為保護訪問。 只能用于類的成員 不能用于結(jié)構(gòu)成員和命名空間下直接定義的類型。 在其所在類和它的派生類中的成員可以訪問,而無法從類的外面訪問。,訪問限制修飾符,內(nèi)部internal 限制為內(nèi)部訪問,即本程序集內(nèi)可以自由訪問。 可修飾類和結(jié)構(gòu)的成員,也可以用于命名空間下直接定義的類型。 類(Class)的默認訪問為intern
29、al。,訪問限制修飾符,protected internal 同一程序集中的任何代碼或其他程序集中的任何派生類都可以訪問該類型或成員。 唯一的組合限制修飾符,類型默認訪問表,靜態(tài)成員和非靜態(tài)成員,靜態(tài)成員 成員屬于類型本身所有,不會隨具體對象的變化而變化,無論類有多少個對象,一個靜態(tài)成員在內(nèi)存中只有一個副本。 使用static來定義 通過類型名調(diào)用 非靜態(tài)成員 屬于類型的實例所有 不加static關(guān)鍵字 通過實例名調(diào)用,靜態(tài)成員和非靜態(tài)成員示例,/程序清單P3_5.cs: using System; namespace P3_5 class StaticFieldSample public s
30、tatic void Main() BankCard card1 = new BankCard(); card1.m_id = 001; card1.Query(); CreditCard card2 = new CreditCard(); card2.m_id = 002; card2.Query(); /修改靜態(tài)字段 BankCard.Currency = 港幣; card1.Query(); card2.Query(); ,public class BankCard public static string Currency = 人民幣; /靜態(tài)字段 public string m_id
31、; protected uint m_amount = 10; public void Query() Console.WriteLine(卡號0: 余額12, m_id, m_amount, Currency); public class CreditCard : BankCard ,變量,基本原則 先定義后使用! 變量命名 使用camel規(guī)則 其它要求,變量種類,靜態(tài)變量 從創(chuàng)建類或結(jié)構(gòu)的第一個實例開始存在,由所有實例共享,直到所有實例從內(nèi)存中清除。 實例變量 數(shù)組元素 數(shù)值參數(shù) 引用參數(shù) 輸出參數(shù) 局部變量,變量,聲明 初始化 賦值,常量,常數(shù)常量const 式 只讀常量readonly,C#程序設(shè)計基礎(chǔ),$4 操作符和表達式,操作符和表達式,操作符 一元操作符:op x 二元操作符:x op y 三元操作符:?:,
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度上海租車租賃合同含長途過路費代繳
- 二零二五版年薪制勞動合同法實施細則與員工保密責(zé)任條款4篇
- 二零二五年度旅游民宿運營免責(zé)合同協(xié)議
- 2025年度個人商鋪租賃合同范本:含裝修補貼及設(shè)施設(shè)備清單4篇
- 2025年度生態(tài)公園土建項目施工合同
- 2025年度民間個人借款擔(dān)保合同范本:信用擔(dān)保與風(fēng)險分擔(dān)
- 二零二五年度農(nóng)用拖拉機二手市場評估與交易合同3篇
- 2025年度農(nóng)民專業(yè)合作社股權(quán)并購與整合合同4篇
- 2025年度個人房產(chǎn)買賣風(fēng)險評估合同范本2篇
- 2025年度個人知識產(chǎn)權(quán)許可使用合同范本9篇
- 趣味知識問答100道
- 鋼管豎向承載力表
- 2024年新北師大版八年級上冊物理全冊教學(xué)課件(新版教材)
- 人教版數(shù)學(xué)四年級下冊核心素養(yǎng)目標全冊教學(xué)設(shè)計
- JJG 692-2010無創(chuàng)自動測量血壓計
- 三年級下冊口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護
- 飲料對人體的危害1
- 數(shù)字經(jīng)濟學(xué)導(dǎo)論-全套課件
- 移動商務(wù)內(nèi)容運營(吳洪貴)項目三 移動商務(wù)運營內(nèi)容的策劃和生產(chǎn)
評論
0/150
提交評論