《講C基本語法》PPT課件.ppt_第1頁
《講C基本語法》PPT課件.ppt_第2頁
《講C基本語法》PPT課件.ppt_第3頁
《講C基本語法》PPT課件.ppt_第4頁
《講C基本語法》PPT課件.ppt_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C#基本語法,C#代碼的外觀和操作方式和C+、Java十分的相似,在C#編程的過程中,不需要花費太多的精力就可以編寫出十分清晰的代碼。,using System; using System.Collections.Generic; using System.Text; namespace Hello_New_World class Program static void Main(string args) Console.WriteLine(Hello New World我的第一個C#應用程序); Console.ReadKey(); ,C#的基本語法概況,C#的每條語句都用一個分號來結束;為

2、了程序的可讀性和易維護性,建議一行一語句,C#編譯器自動過濾回車符之類的空白字符; C#是一個塊結構的編程語言,代碼塊使用“”和“”來界定,代碼塊中可以包含任意條語句,也可以根本不包含語句。在VS 2005中編寫代碼時,系統(tǒng)會根據代碼塊的層次進行自動縮進; C#代碼嚴格區(qū)分大小寫,這與其他許多編程語言是不同的,否則將會引起編譯出錯。例如將上述控制臺程序中的輸出語句“Console.writeLine (Hello New World我的第一個C#應用程序)”更改為“ConSole.WriteLine(Hello New World我的第一個C#應用程序)”,程序將不能正常編譯和執(zhí)行。,C#的基

3、本語法概況,在C#中,可以使用兩種方式來注釋代碼:單行注釋和多行注釋。單行注 釋使用“/”來標記注釋,其后可以編寫任何內容,但一次只能注釋一行語 句,使用多行注釋時,C#以“/*”標記注釋的起始位置,以“*/”標記注釋 結束。,using System.Text; /引用System.Text命名空間 /* 這是一個簡單的C#控制臺應用程序 程序開始 */ namespace Hello_New_World ,C#的基本語法概況,VS 2005具有代碼的突出顯示功能,及代碼的折疊和隱藏功能。在編寫C#代碼時,可以使用“#region”和“#endregion”關鍵字,來定義需要擴展和收縮的代碼

4、,,#region 引用的命名空間 using System; using System.Collections.Generic; using System.Text; #endregion,C#的基本語法概況,變量 變量是計算機內存中的一塊存儲單元,可以將數(shù)據存放到變量中,需要的時 候再從中取出進行查看或修改。 變量的基本類型,變量和表達式,整型變量,浮點型變量,其他3種常用變量類型,變量和表達式,變量的命名規(guī)則和命名方法 變量是計算機中占據一定內存單元的存儲區(qū)域,通過指定變量的名稱來使用 和管理變量。從數(shù)據存儲的角度來看,變量名相當于存儲數(shù)據的變量所占據 的那塊內存單元的標識名。 變量名的

5、第一個字符必須是字母、下劃線(_)或; 其后的字符可以是字母、下劃線、數(shù)字等; 不能使用C#中的關鍵字作為變量名,如using、namespace等,因為這些關鍵字對于C#編譯器而言有特定的含義; C#是區(qū)分大小寫的,因而在命名變量時,一定要使用正確的大小寫,因為在程序中使用它們時,即使只有一個字母的大小寫出錯,也會引起編譯錯誤。 對于簡單的變量,建議使用camelCase命名方法,而對于比較高級的變量, 則使用PascalCase命名方法。,productId productName productDiscontent,ProductId ProductName ProductDiscont

6、ent,camelCase,PascalCase,變量和表達式,識別下列標識符,Person yearly-cost yearly_cost int int myclass Checking#this Float 5day 變量名最好使用具有實際意義的英文單詞,能夠“見名知意”,變量,static void Main(string args) / 聲明布爾型、字符串型、整型、短整型和浮點型變量 bool test = true; short num1 = 19; int num2 = 14000; string val = John; float num3 = 14.5f; / 顯示變量值 C

7、onsole.WriteLine (布爾值 = + test); Console.WriteLine (短整型值 = + num1); Console.WriteLine (整型值 = + num2); Console.WriteLine (字符串值 = + val); Console.WriteLine (浮點值 = + num3); ,變量中存儲的值取決于該變量的類型,變量的作用域,Class Scope public static void Main() int x; x=10; if(x= =10) int y=20; Console.WriteLine(“ x and y:0,1”,

8、x,y); y=100; Console.WriteLine(“x is “+x); ,程序中的一個塊就定義就定義了一個作用域,域內的變量對外部不可見。變量在進入其作用域時創(chuàng)建,在離開作用域時被釋放。,常量 常量又稱為字面值,是一種在使用過程中值不發(fā)生改變的特殊變量。常量的 聲明方法和變量類似,只要在類型關鍵字前面加上const關鍵字并指定常量 值即可。和變量一樣,常量也包括多種類型:數(shù)值常量、字符常量等。 注意:常量在程序中只能被賦值一次,否則編譯器便會報告錯誤。 常量具有以下顯著特征: 常量必須在聲明時進行初始化,其指定值后便不能再進行修改; 常量的值必須能夠在編譯時用于計算,因而,從一個

9、變量中提取某個時刻的值并將其賦值給常量,這種做法是不允許的; 常量是靜態(tài)的,但不必在聲明時使用static修飾符。 在程序中使用常量有以下幾個好處: 常量使用易于理解的名稱,來代替含義不明確的數(shù)字或字符串,使程序更易于閱讀; 常量使程序更易于修改。,const int pi3.1415926;,變量和表達式,常量,static void Main(string args) / PI常量PI const float _pi = 3.14F; / 由地球引力引起的加速度常量,單位為 cm/s*s const float _gravity = 980; / 鐘擺的長度 int length = 40

10、; / 鐘擺的周期 double period = 0; / 鐘擺周期的計算公式 period = 2 * _pi * Math.Sqrt(length / _gravity); Console.WriteLine (鐘擺的周期為 0 秒, period); ,聲明常量,在表達式中使用常量,const 關鍵字用于聲明常量,字符串常量存儲的是一組字符,例如一個用于連接數(shù)據庫的字符常量: 上述常量中便發(fā)生了轉義字符的問題,應用程序在使用該字符串常量來連接數(shù)據庫時,便會出現(xiàn)連接錯誤,原因是系統(tǒng)將字符串常量中的字符“”看作是轉義字符來處理了。如果要解決前面連接數(shù)據庫的字符串常量中的反斜杠字符識別問題,

11、可使用兩個反斜杠,即更改成如下所示:,“server=wjltupwk_wjl;Integrated Security=SSPI;database=電子商務系統(tǒng)”,“server=wjltupwk_wjl;Integrated Security=SSPI;database=電子商務系統(tǒng)”,變量和表達式,C#兩種數(shù)值類型,值類型變量包含本身數(shù)據,而引用類型變量存放的是指向真正數(shù)據塊的引用(指針),C# 的基本數(shù)據類型,static void Main(string args) DataTypeDemo objTest = new DataTypeDemo(); objTest.Val = 100

12、; / 傳遞屬于引用類型的對象 Test(objTest); / 由于該數(shù)據類型屬于引用類型,所以會考慮新處理的值 Console.WriteLine(變量的值為 0, objTest.Val); static void Test(DataTypeDemo dataTest) int temp = 10; dataTest.Val = temp * 20; ,將 DataTypeTest 的引用傳遞給 Test(),被傳遞的 val 在 Test() 中改變,反映已經改變的 val 值,不而保留原始值,class DataTypeDemo public int Val; ,裝箱和拆箱,int

13、val = 100; object obj = val; Console.WriteLine (“對象的值 = 0, obj);,int val = 100; object obj = val; int num = (int) obj; Console.WriteLine (num: 0, num);,拆箱,裝箱,被裝過箱的對象才能被拆箱,裝箱/拆箱,實現(xiàn)值類型/引用類型之間轉換的機制 int i=110; object obj=i; /object obj=(object)i; int j=(int)obj; 注意:拆箱轉換的數(shù)據類型必須與裝箱的類型一致(兼容),否則出錯!,對象類型Syst

14、em.Object,所有其他對象的基類,所有的數(shù)據類型都直接或間接的從object類型繼承 Object類型的變量可接受任何類型的數(shù)值 是實現(xiàn)裝箱/拆箱的本源所在,using System; using System.Collections.Generic; using System.Text; namespace HelloWorld class ObjectApp int number = 918; static void Main(string args) object obj = 124; Console.WriteLine(obj); Console.WriteLine(obj.Ge

15、tType(); obj = new ObjectApp(); ObjectApp value; value = (ObjectApp)obj; Console.WriteLine(value.number); Console.WriteLine(obj.GetType(); Console.Read(); ,可用object引用指向任何類型的對象,用相同的代碼對不同類型的數(shù)據執(zhí)行不同的操作,這就是單一繼承體系的好處,GetType()可動態(tài)獲得對象的真正類型,Object.ToString()獲得對象的字面量,獲得一個對象的用戶友好的字符串表示,通過改寫ToString來進行自定義輸出,cl

16、ass Teacher public string name; public string courseName; public override string ToString() return string.Format(Im a teacher,my name is 0 and I teach 1,,this.courseName); ,class Student public string name; public int age; public Student(string name, int age) = name; this.age = ag

17、e; public override string ToString() return string.Format(I am a student,my name is 0 and I am 1 years old,name,age); ,static void Main(string args) Teacher t = new Teacher(); = Bill Gates; t.courseName = Objects orientation programming; Student s = new Student(Tom Hanks, 18); Console.WriteLi

18、ne(t); Console.WriteLine(s); /等價于調用Console.WriteLine(s.ToString(); Console.Read(); ,通過改寫ToString方法,可以提供一致的形式來顯示對象的信息,這里體現(xiàn)了面向對象編程的什么特性呢?,多態(tài)性!,隱式轉換和強制轉換,隱式(賦值和混合表達式中) 自動算術表達式轉換,低類型的操作數(shù)被提升到高類型,結果也為高類型 double s;int i;s+i 顯式 強制將高級數(shù)據類型轉換成低級數(shù)據類型 int i=(int)(1.2*y+0.5); 一般會導致丟失一些數(shù)據精度,C#所支持的隱式類型轉換,顯式轉換 明確要求顯

19、示器把一種變量類型轉換為另外一種變量類型時,便是顯式轉換,這相當于告訴編譯器“我已經知道你對我這么做提出了警告,但我將對這么做的后果負責”。 但這種轉換很可能在程序運行期間因類型轉換而造成數(shù)據丟失,造成極大破壞,這又被稱為數(shù)據的溢出。 推薦使用Convert命令來進行顯式轉換,這種轉換能夠成功執(zhí)行的前提是:所要轉換的字符串必須是數(shù)值的有效表達方式,而且不會溢出。,(目標類型)源變量;,可使用Convert命令轉換的數(shù)據類型,as實現(xiàn)轉型,語法:T t2=t1 as T 含義:如果對象t1為類型T(或其子類)的實例,則將t1賦值給t2,否則t2為null 與顯式強制類型轉換相比,它避免了由于類型

20、不匹配造成的異常拋出,using System; class Class1 class Class2 ,class MainClass static void Main() object objArray = new object6; objArray0 = new Class1(); objArray1 = new Class2(); objArray2 = hello; objArray3 = 123; objArray4 = 123.4; objArray5 = null; for (int i = 0; i objArray.Length; +i) string s = objArra

21、yi as string; Console.Write(0:, i); if (s != null) Console.WriteLine( + s + ); else Console.WriteLine(not a string); ,0:not a string 1:not a string 2:hello 3:not a string 4:not a string 5:not a string,運算符與表達式,變量和常量解決了數(shù)據的存儲問題,而表達式則用于數(shù)據的處理,它是計算的的基本建立塊。在C#中,將變量、常量和運算符組合在一起,便形成了表達式。 運算符用于解決數(shù)據的處理方式,根據能夠處

22、理的操作數(shù)的多少,可以分為: 一元運算符處理一個操作數(shù); 二元運算符處理兩個操作數(shù); 三元運算符處理三個操作數(shù)。,數(shù)學表達式,數(shù)學運算符,變量和表達式,關系表達式,比較運算符,變量和表達式,邏輯運算符,變量和表達式,注意, / x 的系數(shù) int cf2 = -7; / 二次方程的常數(shù)值 int constant = 3; / 存放表達式 b2 - 4ac 的值 double expression = 0; double x1 = 0; double x2 = 0; Console.WriteLine(二次方程為: 0 x2 + 1x + 2, cf1, cf2, constant); exp

23、ression = Math.Sqrt(cf2 * cf2 - (4 * cf1 * constant); x1 = (-cf2) + expression) / (2 * cf1); x2 = (-cf2) - expression) / (2 * cf1); Console.Write(x = 0:F2 , x1); Console.Write( 或 ); Console.WriteLine(x = 0:F2, x2); ,將值賦給變量,在表達式中使用的算術運算符,位運算, class BitWiseCompl public static void Main() short a = 10;

24、 ushort b = 10; int c = 10; uint d = 10; Console.WriteLine(10); Console.WriteLine(short: 0, a); Console.WriteLine(ushort: 0, b); Console.WriteLine(int: 0, c); Console.WriteLine(uint: 0, d); ,閱讀代碼,61頁 例4.6,運算符的優(yōu)先級,變量和表達式,變量和表達式,其他C#運算符,new 操作符,new操作符用于創(chuàng)建一個新的類型實例。它有三種形式: 對象創(chuàng)建表達式,用于創(chuàng)建一個類類型或值類型的實例。 數(shù)組創(chuàng)建

25、表達式,用于創(chuàng)建一個數(shù)組類型實例。 代表創(chuàng)建表達式,用于創(chuàng)建一個新的代表類型實例。 例: class A; A a = new A; int int_arr = new int10; delegate double DFunc(int x); DFunc f = new DFunc(5);,is 操作符,/ is操作符 using System; class OptIsExample public static void Main() Console.WriteLine(1 is int); Console.WriteLine(1 is float); Console.WriteLine(1.

26、0 is float); Console.WriteLine(1.0 is double); ,is操作符被用于動態(tài)地檢查運行時對象類型是否和給定的類型兼容。運算“e is T”的結果,其中,e是一個表達式,T是一個類型,返回值是一個布爾值。,命名空間,銷售部,技術部,張三,張三,命名空間,Class Manager long int salary; . ., long int salary; . ,Class Manager,命名空間 SaleDept,命名空間 ITDept,AdminDept.Manager,ITDept.Manager,類庫,命名空間,Class SamsungTele

27、vision ,Class SonyWalkman ,Class SonyTelevision ,Class SamsungWalkman ,長名稱難以維護,namespace Tcl class Television . class WalkMan . ,CH.Television,Tcl.Television,namespace CH class Television . class WalkMan . ,有條理,有結構,命名空間,namespace 命名空間的名稱 / 該名稱空間的所有類都放在這里。 ,語法,命名空間,namespace Tcl class Monitor public

28、void ListModels() Console.WriteLine(“供應Tcl以下型號的顯示器:); Console.WriteLine(14, 15 n); static void Main(string args) / / TODO: 在此處添加代碼以啟動應用程序 / ,命名空間,namespace CH public class Monitor public void ListModelStocks() Console.WriteLine(“以下是 長虹 顯示器的規(guī)格及其庫存量:); Console.WriteLine(14=1000, 15=2000, 17=3000); sta

29、tic void Main(string args) Tcl.Monitor objTcl = new Tcl.Monitor(); Monitor objCh = new Monitor(); objTcl.ListModels(); objCh.ListModelStocks(); ,為什么使用命名空間(1) C#采用的是單一的全局變量命名空間,若有兩個變量或函數(shù)的名稱完全相同,就會出現(xiàn)沖突. 如定義了一個用戶名變量userName,可能在調用某個庫文件或別的程序代碼中也定義了相同的變量名,此時便出現(xiàn)了沖突。 命名空間就是為解決C#中變量、函數(shù)的命名沖突而服務的??梢詫⑼幻Q的變量定義在

30、不同的命名空間中。 如:張家有電視機,李家也有電視機,王家也有電視機,但因為它們屬于不同的家庭,使用時只需將它們所屬的家庭作為前綴名即可。,命名空間和using語句,為什么使用using語句(2) 創(chuàng)建了命名空間后,如果命名空間中嵌套比較深,在外部引用它們時是十分不方便的,可以使用using語句來簡化對它們的訪問,using語句的意思就好比是“我們需要對這個命名空間中的變量,所以不要每次總是要求對它們分類”。 什么情況下使用命名空間的別名 使用using語句可以簡化對命名空間的引用,然而某些命名空間中很可能包含相同名稱的類,在某些情況下卻恰恰需要用到這些同名的類。 例如在.NET Framew

31、ork類庫中存在3個Timer類:System.Timer.Timer、 System.Threading.Timer和System.Windows.Forms.Timer,我們需要使 用System.Timer.Timer在后臺以固定的時間間隔檢查所有應用程序或系統(tǒng) 的狀態(tài),而使用System.Windows.Forms.Timer來在用戶界面中顯示一個 簡單的動畫,這時,開發(fā)人員就必須在類前面加上命名空間。,命名空間和using語句,此時程序顯得比較冗長,可以使用using語句來給命名空間指定一個別名。 當程序中需要引用這個命名空間時,可以簡單地使用它的別名,使用別名的方法和使用命名空間完

32、全相同。 using語句本身不能訪問另一個命名空間中的名稱,除非命名空間中的代碼以某種方式鏈接到項目上,或者代碼是在該項目的源文件中定義的,或在鏈接到該項目的其他代碼中定義的,否則就不能訪問其中包含的名稱。 另外,如果包含命名空間的代碼鏈接到項目上,無論是否使用using關鍵字,都可以訪問其中包含的變量或類。,using 別名=命名空間名;,命名空間和using語句,命名空間別名,using Class1 = Namespace1.Test;/別名到類 using Ns2= Namespace2.NameSpace3.NameSpace4; /別名到命名空間 namespace Namespa

33、ce1 class Test public Test() System.Console.WriteLine(Hello from Namespace1.Test); class MainClass public static void Main() Class1 obj1=new Class1(); Ns2.Test obj2=new Ns2.Test(); System.Console.Read(); ,namespace Namespace2 namespace Namespace3 namespace Namespace4 class Test public Test() System.

34、Console.WriteLine(Hello from Namespace2.Test); ,String類型,由一個或多個字符組成,一般以“”為界 System.String類中定義了很多對字符串的操作:比較、連接、查找子串。,static void Main(string args) string a=u0068ello; string b= world; string c=a+b; Console.WriteLine(c); Console.WriteLine(c.Length); a=你好; Console.WriteLine(c); c=string.Copy(a); Consol

35、e.WriteLine(c); Console.Read(); ,String類的用法,string.Format實現(xiàn)字符串的格式化 輸入兩個整數(shù),輸出他們的實數(shù)除商,并輸出上的第二位小數(shù),static void Main() int i = Convert.ToInt32(Console.ReadLine(); int j = Convert.ToInt32(Console.ReadLine(); double shang = (double)i / j; string str = string.Format(0:F3, shang); char c = strstr.Length - 2;

36、 Console.WriteLine(c); Console.Read(); ,日期DateTime類型,表示時間上的一刻,通常以日期和當天的時間表示。 示例:,Console.WriteLine(DateTime.Now); DateTime date=new DateTime(2006,2,28,12,12,12); Console.WriteLine(date); Console.WriteLine(date.DayOfWeek); Console.WriteLine(date.DayOfYear); TimeSpan duration = new System.TimeSpan(36,

37、 0, 0, 0); DateTime jinian = date.Add(duration); Console.WriteLine(jinian);,DateTime的格式化輸出 P.45,參數(shù)format格式詳細用法 格式字符 關聯(lián)屬性/說明 d ShortDatePattern D LongDatePattern f 完整日期和時間(長日期和短時間) F FullDateTimePattern(長日期和長時間) g 常規(guī)(短日期和短時間) G 常規(guī)(短日期和長時間) m、M MonthDayPattern r、R RFC1123Pattern s 使用當?shù)貢r間的 SortableDateTimePattern(基于 ISO 8601) t ShortTimePattern T LongTimePattern u Univer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論