大家好,又見面了,我是你們的朋友全棧君。 C#基礎(chǔ)教程-c#實(shí)例教程,適合初學(xué)者。 第一章 C#語言基礎(chǔ) 本章介紹C#語言的基礎(chǔ)知識(shí),希望具有C語言的讀者能夠基本掌握C#語言,并以此為基礎(chǔ),能夠進(jìn)一步學(xué)習(xí)用C#語言編寫window應(yīng)用程序和Web應(yīng)用程序。當(dāng)然僅靠一章的內(nèi)容就完全掌握C#語言是不可能的,如需進(jìn)一步學(xué)習(xí)C#語言,還需要認(rèn)真閱讀有關(guān)C#語言的專著。 1.1 C#語言特點(diǎn) Microsoft.NET(以下簡(jiǎn)稱.NET)框架是微軟提出的新一代Web軟件開發(fā)模型,C#語言是.NET框架中新一代的開發(fā)工具。C#語言是一種現(xiàn)代、面向?qū)ο蟮恼Z言,它簡(jiǎn)化了C++語言在類、命名空間、方法重載和異常處理等方面的操作,它摒棄了C++的復(fù)雜性,更易使用,更少出錯(cuò)。它使用組件編程,和VB一樣容易使用。C#語法和C++和JAVA語法非常相似,如果讀者用過C++和JAVA,學(xué)習(xí)C#語言應(yīng)是比較輕松的。 用C#語言編寫的源程序,必須用C#語言編譯器將C#源程序編譯為中間語言(MicroSoft Intermediate Language,MSIL)代碼,形成擴(kuò)展名為exe或dll文件。中間語言代碼不是CPU可執(zhí)行的機(jī)器碼,在程序運(yùn)行時(shí),必須由通用語言運(yùn)行環(huán)境(Common Language Runtime,CLR)中的既時(shí)編譯器(JUST IN Time,JIT)將中間語言代碼翻譯為CPU可執(zhí)行的機(jī)器碼,由CPU執(zhí)行。CLR為C#語言中間語言代碼運(yùn)行提供了一種運(yùn)行時(shí)環(huán)境,C#語言的CLR和JAVA語言的虛擬機(jī)類似。這種執(zhí)行方法使運(yùn)行速度變慢,但帶來其它一些好處,主要有: ? 通用語言規(guī)范(Common Language Specification,CLS):.NET系統(tǒng)包括如下語言:C#、C++、VB、J#,他們都遵守通用語言規(guī)范。任何遵守通用語言規(guī)范的語言源程序,都可編譯為相同的中間語言代碼,由CLR負(fù)責(zé)執(zhí)行。只要為其它操作系統(tǒng)編制相應(yīng)的CLR,中間語言代碼也可在其它系統(tǒng)中運(yùn)行。 ? 自動(dòng)內(nèi)存管理:CLR內(nèi)建垃圾收集器,當(dāng)變量實(shí)例的生命周期結(jié)束時(shí),垃圾收集器負(fù)責(zé)收回不被使用的實(shí)例占用的內(nèi)存空間。不必象C和C++語言,用語句在堆中建立的實(shí)例,必須用語句釋放實(shí)例占用的內(nèi)存空間。也就是說,CLR具有自動(dòng)內(nèi)存管理功能。 ? 交叉語言處理:由于任何遵守通用語言規(guī)范的語言源程序,都可編譯為相同的中間語言代碼,不同語言設(shè)計(jì)的組件,可以互相通用,可以從其它語言定義的類派生出本語言的新類。由于中間語言代碼由CLR負(fù)責(zé)執(zhí)行,因此異常處理方法是一致的,這在調(diào)試一種語言調(diào)用另一種語言的子程序時(shí),顯得特別方便。 ? 增加安全:C#語言不支持指針,一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的引用變量來實(shí)現(xiàn),只允許訪問內(nèi)存中允許訪問的部分,這就防止病毒程序使用非法指針訪問私有成員。也避免指針的誤操作產(chǎn)生的錯(cuò)誤。CLR執(zhí)行中間語言代碼前,要對(duì)中間語言代碼的安全性,完整性進(jìn)行驗(yàn)證,防止病毒對(duì)中間語言代碼的修改。 ? 版本支持:系統(tǒng)中的組件或動(dòng)態(tài)聯(lián)接庫可能要升級(jí),由于這些組件或動(dòng)態(tài)聯(lián)接庫都要在注冊(cè)表中注冊(cè),由此可能帶來一系列問題,例如,安裝新程序時(shí)自動(dòng)安裝新組件替換舊組件,有可能使某些必須使用舊組件才可以運(yùn)行的程序,使用新組件運(yùn)行不了。在.NET中這些組件或動(dòng)態(tài)聯(lián)接庫不必在注冊(cè)表中注冊(cè),每個(gè)程序都可以使用自帶的組件或動(dòng)態(tài)聯(lián)接庫,只要把這些組件或動(dòng)態(tài)聯(lián)接庫放到運(yùn)行程序所在文件夾的子文件夾bin中,運(yùn)行程序就自動(dòng)使用在bin文件夾中的組件或動(dòng)態(tài)聯(lián)接庫。由于不需要在注冊(cè)表中注冊(cè),軟件的安裝也變得容易了,一般將運(yùn)行程序及庫文件拷貝到指定文件夾中就可以了。 ? 完全面向?qū)ο螅翰幌驝++語言,即支持面向過程程序設(shè)計(jì),又支持面向?qū)ο蟪绦蛟O(shè)計(jì),C#語言是完全面向?qū)ο蟮?,在C#中不再存在全局函數(shù)、全局變量,所有的函數(shù)、變量和常量都必須定義在類中,避免了命名沖突。C#語言不支持多重繼承。 1.2 編寫控制臺(tái)應(yīng)用程序 使用SDK命令行工具編寫控制臺(tái)程序 第一個(gè)程序總是非常簡(jiǎn)單的,程序首先讓用戶通過鍵盤輸入自己的名字,然后程序在屏幕上打印一條歡迎信息。程序的代碼是這樣的: using System;//導(dǎo)入命名空間。//為C#語言新增解釋方法,解釋到本行結(jié)束 class Welcome//類定義,類的概念見下一節(jié) { /*解釋開始,和C語言解釋用法相同 解釋結(jié)束*/ static void Main()//主程序,程序入口函數(shù),必須在一個(gè)類中定義 { Console.WriteLine(“請(qǐng)鍵入你的姓名:”);//控制臺(tái)輸出字符串 Console.ReadLine();//從鍵盤讀入數(shù)據(jù),輸入回車結(jié)束 Console.WriteLine(“歡迎!”); } } 可以用任意一種文本編輯軟件完成上述代碼的編寫,然后把文件存盤,假設(shè)文件名叫做welcome.c |
|