C#編程語言基礎(chǔ)_第1頁
C#編程語言基礎(chǔ)_第2頁
C#編程語言基礎(chǔ)_第3頁
C#編程語言基礎(chǔ)_第4頁
C#編程語言基礎(chǔ)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C#.NET是微軟公司推出的一種類型安全、現(xiàn)代、簡(jiǎn)單、由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。掌握C#.NET的特點(diǎn)、程序結(jié)構(gòu)、集成開發(fā)環(huán)境、C#語言的基本知識(shí)等,是利用好C#的前提。本章內(nèi)容C#概述C#語言基礎(chǔ)控制結(jié)構(gòu)數(shù)組■異常處理1.1C#概述C#是微軟公司在2000年7月發(fā)布的一種全新的簡(jiǎn)單、安全、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。它是專門為.NET的應(yīng)用而開發(fā)的語言。.NET簡(jiǎn)介1..NET定義.NET技術(shù)是微軟公司推出的一個(gè)全新概念,它代表了一個(gè)集合、一個(gè)環(huán)境和一個(gè)可以作為平臺(tái)支持下一代Internet的可編程結(jié)構(gòu)。.NET的目的就是將互聯(lián)網(wǎng)作為新一代操作系統(tǒng)的基礎(chǔ),對(duì)互聯(lián)網(wǎng)的設(shè)計(jì)思想進(jìn)行擴(kuò)展,使用戶在任何地方、任何時(shí)間、利用任何設(shè)備都能訪問所需要的信息、文件和程序。.NET平臺(tái)包括.NET框架和.NET開發(fā)工具等部分。.NET框架(Framework)是整個(gè)開發(fā)平臺(tái)的基礎(chǔ),包括公共語言運(yùn)行庫和.NET類庫。.NET開發(fā)工具包括VisualStudio.NET集成開發(fā)環(huán)境和.NET編程語言。.NET編程語言包括VisualBasic、VisualC++和新的VisualC#等用來創(chuàng)建運(yùn)行在公共語言運(yùn)行庫(CommonLanguageRun,CLR)上的應(yīng)用程序。.NET框架結(jié)構(gòu)如圖1-1所示。VisualBasic.NETC#托管C++J#其他語言公共語言規(guī)范(CLS)ASP.NET/Web應(yīng)用/Web服務(wù) | Windows窗體應(yīng)用ADO.NET與XML .NET框架基礎(chǔ)類庫 公共語言運(yùn)行時(shí)操作系統(tǒng)圖1-1.NET框架結(jié)構(gòu)2.公共語言運(yùn)行庫公共語言運(yùn)行庫是.NETFramework的基礎(chǔ)??梢詫⑦\(yùn)行庫看成一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且還強(qiáng)制實(shí)施嚴(yán)格的類型安全以及可確保安全性和可靠性的其他形式的代碼準(zhǔn)確性。事實(shí)上,代碼管理的概念是運(yùn)行庫的基本原則。以運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。公共語言運(yùn)行庫管理內(nèi)存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗(yàn)證、編譯以及其他系統(tǒng)服務(wù)。這些功能是在公共語言運(yùn)行庫上運(yùn)行的托管代碼所固有的。3..NET框架類庫.NETFramework類庫是一個(gè)與公共語言運(yùn)行庫緊密集成的可重用的類型集合,是對(duì)WindowsAPI封裝的全新設(shè)計(jì),它為開發(fā)人員提供了一個(gè)統(tǒng)一的、面向?qū)ο蟮摹⒎謱拥暮涂蓴U(kuò)展的龐大類庫。該類庫是面向?qū)ο蟮?,?NETFramework類型易于使用,而且還減少了學(xué)習(xí).NETFramework的新功能所需要的時(shí)間。此外,第三方組件可與.NETFramework中的類無縫集成。例如,用.NETFramework集合類實(shí)現(xiàn)一組可用于開發(fā)您自己的集合類的接口。您的集合類將與.NETFramework中的類無縫地混合。.NETFramework類型使您能夠完成一系列常見編程任務(wù)(包括字符串管理、數(shù)據(jù)收集、數(shù)據(jù)庫連接以及文件訪問等任務(wù))。除這些常見任務(wù)之外,類庫還包括支持多種專用開發(fā)方案的類型。例如,可使用.NETFramework開發(fā)下列類型的應(yīng)用程序和服務(wù):?控制臺(tái)應(yīng)用程序。WindowsGUI應(yīng)用程序(Windows窗體)。ASP.NET應(yīng)用程序。XMLWebservices。Windows服務(wù)。例如,Windows窗體類是一組綜合性的可重用類型,它們大大簡(jiǎn)化了WindowsGUI的開發(fā)。如果要編寫ASPNETWeb窗體應(yīng)用程序,可使用Web窗體類。什么是C#1.C#及其特點(diǎn)C#是微軟公司在2000年7月發(fā)布的一種全新且簡(jiǎn)單、安全、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是專門為.NET的應(yīng)用而開發(fā)的語言。它吸收了C++、VisualBasic、Delphi、Java等語言的優(yōu)點(diǎn),體現(xiàn)了當(dāng)今最新的程序設(shè)計(jì)技術(shù)的功能和精華。C#繼承了C語言的語法風(fēng)格,同時(shí)又繼承了C++的面向?qū)ο筇匦?。不同的是,C#的對(duì)象模型已經(jīng)面向Internet進(jìn)行了重新設(shè)計(jì),使用的是.NET框架的類庫;C#不再提供對(duì)指針類型的支持,使得程序不能隨便訪問內(nèi)存地址空間,從而更加健壯;C#不再支持多重繼承,避免了以往類層次結(jié)構(gòu)中由于多重繼承帶來的可怕后果。.NET框架為C#提供了一個(gè)強(qiáng)大的、易用的、邏輯結(jié)構(gòu)一致的程序設(shè)計(jì)環(huán)境。同時(shí),公共語言運(yùn)行時(shí)(CommonLanguageRuntime)為C#程序語言提供了一個(gè)托管的運(yùn)行時(shí)環(huán)境,使程序比以往更加穩(wěn)定、安全。其特點(diǎn)有:?語言簡(jiǎn)潔。?保留了C++的強(qiáng)大功能??焖賾?yīng)用開發(fā)功能。語言的自由性。強(qiáng)大的Web服務(wù)器控件。支持跨平臺(tái)。與XML相融合。C#與C++的比較C#對(duì)C++進(jìn)行了多處改進(jìn),主要區(qū)別如下:?編譯目標(biāo):C++代碼直接編譯為本地可執(zhí)行代碼,而C#默認(rèn)編譯為中間語言(IL)代碼,執(zhí)行時(shí)再通過Just-In-Time將需要的模塊臨時(shí)編譯成本地代碼。?內(nèi)存管理:C++需要顯式地刪除動(dòng)態(tài)分配給堆的內(nèi)存,而C#不需要這么做,C#采用垃圾回收機(jī)制自動(dòng)在合適的時(shí)機(jī)回收不再使用的內(nèi)存。?指針:C++中大量地使用指針,而C#使用對(duì)類實(shí)例的引用,如果確實(shí)想在C#中使用指針,必須聲明該內(nèi)容是非安全的。不過,一般情況下C#中沒有必要使用指針。?字符串處理:在C#中,字符串是作為一種基本數(shù)據(jù)類型來對(duì)待的,因此比C++中對(duì)字符串的處理要簡(jiǎn)單得多。?庫:C++依賴于以繼承和模板為基礎(chǔ)的標(biāo)準(zhǔn)庫,C#則依賴于.NET基庫。C++允許類的多繼承,而C#只允許類的單繼承,而通過接口實(shí)現(xiàn)多繼承。在后面的學(xué)習(xí)中會(huì)發(fā)現(xiàn),C#與C++相比還有很多不同和改進(jìn)之處,包括一些細(xì)節(jié)上的差別,這里就不一一列舉了。C#與Java的比較C#面向?qū)ο蟮某潭缺菾ava高。C#中的基本類型都是面向?qū)ο蟮?。C#具有比Java更強(qiáng)大的功能。C#語言的執(zhí)行速度比Java快。VisualStudio.NET的集成開發(fā)環(huán)境.NET開發(fā)語言都采用了統(tǒng)一的集成開發(fā)環(huán)境VisualStudio.NET。下面加以介紹。

(1)VisualStudio起始頁啟動(dòng)VisualStudio.NET后,首先看到一個(gè)如圖1-2所示的起始頁。在起始頁可以打開已有的項(xiàng)目或建立新的項(xiàng)目。圖1-2VisualStudio起始頁(2)新建VisualC#.NET項(xiàng)目在VisualStudio.NET集成開發(fā)環(huán)境中,通過執(zhí)行“文件”一“新建”一“項(xiàng)目”菜單命令,將會(huì)彈出“新建項(xiàng)目”對(duì)話框,在該對(duì)話框中,可以選擇不同的編程語言來創(chuàng)建各種項(xiàng)目,這些語言將共享VisualStudio.NET的集成開發(fā)環(huán)境,如圖1-3所示。圖1-3“新建項(xiàng)目”對(duì)話框要?jiǎng)?chuàng)建新的VisualC#.NET項(xiàng)目,需要在該對(duì)話框的“項(xiàng)目類型”窗口中選中“VisualC#項(xiàng)目”,在“模板”窗口中選中“Windows應(yīng)用程序”。然后在“位置”組合框中輸入項(xiàng)目的保存位置(路徑),在“名稱”文本框中輸入項(xiàng)目名稱,如圖1-3所示。然后單擊“確定”按鈕,將會(huì)出現(xiàn)如圖1-4所示的VisualStudio.NET集成開發(fā)環(huán)境。

圖1-4圖1-4VisualStudio.NET開發(fā)環(huán)境(3)“解決方案資源管理器”窗口項(xiàng)目可以視為編譯后的一個(gè)可執(zhí)行單元,可以是應(yīng)用程序、動(dòng)態(tài)鏈接庫等。而企業(yè)級(jí)的解決方案往往需要多個(gè)可執(zhí)行程序的合作,為便于管理多個(gè)項(xiàng)目,在VisualStudio.NET集成環(huán)境中引入了解決方案資源管理器,用來對(duì)企業(yè)級(jí)解決方案設(shè)計(jì)的多個(gè)項(xiàng)目進(jìn)行管理,如圖1-5所示。(4)“類視圖”窗口“類視圖”窗口以樹形結(jié)構(gòu)顯示了當(dāng)前項(xiàng)目中的所有類,并在類中列出成員變量和成員函數(shù)。每一個(gè)類首先列出帶紫色圖標(biāo)的成員函數(shù),然后列出帶有藍(lán)色圖標(biāo)的成員變量。每個(gè)成員的圖標(biāo)左邊都有一個(gè)標(biāo)志,以表示成員類型和存儲(chǔ)類別的信息,保護(hù)類型成員圖標(biāo)旁邊的標(biāo)志為一把鑰匙,私有成員的標(biāo)志是一把鎖,而公有成員圖標(biāo)旁邊沒有標(biāo)志。如圖1-6所示。解決方案資逵管理器-Wind...解決方案資逵管理器-Wind...翼類視圖pVintio加npplhz日tionZBJ解決方^u解決方^uWindowsApplication2'+上引用…國App.ico井"|Assemblylnfu.cs…FBIForrril.cs-爭(zhēng)刪刪艸肚巒刪白…{}WindowsApplication2Forml+空基項(xiàng)和接口律Dispose(bool)?Form1()

InitializeCorn口匚「曰

詐Main():碑corripunerits±1總解…馬類…習(xí)索引|圖1-5圖1-5“解決方案資源管理器”窗口圖1-6“類視圖”窗口在“類視圖”窗口中雙擊類名,會(huì)在主工作區(qū)中打開這個(gè)類的頭文件,顯示出類的聲明;而雙擊某個(gè)類的成員,則主工作區(qū)中會(huì)顯示該成員的定義代碼。(5)“工具箱”窗口“工具箱”窗口包含了可重用的控件,用于定義應(yīng)用程序。使用可視化的方法編程時(shí),可在窗體中“拖放”控件,繪制出應(yīng)用程序界面。“工具箱”中的控件分成幾組,如“數(shù)據(jù)”組、“組件”組、“Windows窗體”組。單擊組名稱可展開一個(gè)組。如圖1-7所示。工具箱數(shù)據(jù)k指針囲DataSet矍OleDbDataAdapter鬲OleDbConnectionOleDbCommand工具箱數(shù)據(jù)k指針囲DataSet矍OleDbDataAdapter鬲OleDbConnectionOleDbCommand曜SqlDataAdapter謝5qlConnection窮5qlCommand矍OdbcDataAdapter鬲OdbcConnectionf郭OdbcCommand隍OradeDataAdapter組件 ▼Windows?#聖貼板循環(huán)常規(guī)ALinkLabelab|ButtonTextBox崗MainMenu圍CheckBox?RadioButton嚴(yán)1GroupBox國PictureBoxHIPanel圍DataGrid聖貼板循環(huán)常規(guī)工具箱數(shù)據(jù)組件k指針FileSystemWatcherEventLogDirectoryEntryDirectorySeardierMessageQueuePerFormanceCou???ProcessServiceControllerTinnerReportDocumentWindows?#I▼剪貼換循環(huán)常規(guī)圖1-7“工具箱”窗口(6)“屬性”窗口“屬性”窗口用于設(shè)置控件的屬性。屬性定義了控件的信息,如大小、位置、顏色等屬性”窗口左邊一欄顯示了控件的屬性名,右邊一欄顯示屬性的當(dāng)前值。如圖1-8所示??丶x擇按字母排序?qū)傩悦录D標(biāo)屬性圖標(biāo)屬性值屬性描述控件選擇按字母排序?qū)傩悦录D標(biāo)屬性圖標(biāo)屬性值屬性描述圖1-8“屬性”窗口1.1.4初識(shí)C#程序C#.NET主要用于開發(fā)三類程序:控制臺(tái)程序、Windows程序和ASPNET程序。C#程序的擴(kuò)展名為.CS,使用編譯器CSC.EXE可編譯成可執(zhí)行文件。1.控制臺(tái)程序案例1-1】一個(gè)簡(jiǎn)單的控制臺(tái)程序。程序運(yùn)行后顯示“歡迎XXX進(jìn)入C#世界!”,運(yùn)行結(jié)果如圖1-9所示。圖1-9歡迎進(jìn)入C#世界【技術(shù)要點(diǎn)】C#應(yīng)用程序包含Main方法,它是C#應(yīng)用程序執(zhí)行的起點(diǎn)。在該函數(shù)中通過系統(tǒng)類Console的方法WriteLine(),可以在屏幕上輸出字符串?!緦?shí)現(xiàn)步驟】(1)啟動(dòng)VisualStudio.NET。選擇主菜單“文件”一“新建”一“項(xiàng)目”打開“新建項(xiàng)目”對(duì)話框。在“新建項(xiàng)目”對(duì)話框中的左窗格選擇“VisualC#項(xiàng)目”右窗格選擇“控制臺(tái)應(yīng)用程序”,然后指定項(xiàng)目名稱和存放位置,單擊“確定”按鈕。在代碼編輯窗口中可看到自動(dòng)生成的程序代碼框架,在Main函數(shù)中加入代碼。選擇主菜單“生成”一“生成Welcome”進(jìn)行編譯和連接。選擇“調(diào)試”一“啟動(dòng)”執(zhí)行程序?!境绦虼a】usingSystem;namespaceWelcome{///<summary>///Class1的摘要說明///</summary>classClass1{///<summary>///應(yīng)用程序的主入口點(diǎn)///</summary>[STAThread]staticvoidMain(string[]args){Console.WriteLine("請(qǐng)輸入你的名字:");stringusername=Console.ReadLine();Console.WriteLine("歡迎{0}進(jìn)入C#世界!",username);

}}}程序中的第一行語句“usingSystem;”的作用是導(dǎo)入命名空間,該語句類似于C和C++中的#include命令。導(dǎo)入命名空間之后,就可以自由使用其中的元素了。System是.NET框架提供的最基本的命名空間之一,Console是System命名空間中包含的系統(tǒng)類庫中已定義的一個(gè)類。利用該類的ReadLine()和WriteLine()方法可以進(jìn)行輸入輸出。{0}代替WriteLine方法的參數(shù)表中緊隨格式串后的第一個(gè)變量。可以用該技術(shù)格式化多個(gè)變量。例如:Console.WriteLine("Hello{0}{1},from{2}",strFirstname,strLastname,strCity);namespace語句聲明了一個(gè)命名空間Welcome。每個(gè)C#程序可以包含一個(gè)或多個(gè)命名空間。類、結(jié)構(gòu)、接口、枚舉、委托等類型都包含在命名空間中。class為定義類的關(guān)鍵字,類的名稱為Classi。C#程序的基本單位是類。程序中的語句“staticvoidMain(string[]args);”為類Classi聲明了一個(gè)主方法。在C#程序中,程序的執(zhí)行總是從Main()方法開始的,一個(gè)程序只能包含一個(gè)主方法??梢酝ㄟ^Windows記事本來編寫程序。保存的文件名為Welcome.cs。然后從開始菜單中選擇“程序”―“MicrosoftVisualStudio.NET2003”—“VisualStudio.NET工具” “VisualStudio.NET命令行提示”命令,將會(huì)出現(xiàn)命令行。在命令行中輸入命令“CSC盤符\目錄\Welcome.cs”,回車即可生成可執(zhí)行文件Welcome.exe。執(zhí)行Welcome即可看到運(yùn)行結(jié)果。2.圖形界面程序案例1-2】第一個(gè)圖形界面程序。設(shè)計(jì)一個(gè)程序,界面上用一個(gè)文本框輸入姓名,單擊“確定”按鈕后,在文本框中顯圖1-10第一個(gè)圖形界面程序示“歡迎XXX進(jìn)入C#世界!”,運(yùn)行結(jié)果如圖1-10所示。圖1-10第一個(gè)圖形界面程序在按鈕的單擊事件privatevoidbutton1_Click(objectsender,System.EventArgse)中取出文本框中的內(nèi)容,然后與“歡迎”及“進(jìn)入C#世界!”相連,再賦給文本框的Text的屬性?!緦?shí)現(xiàn)步驟】(1)啟動(dòng)VisualStudio.NET。2)選擇主菜單“文件”—“新建”—“項(xiàng)目”,打開“新建項(xiàng)目”對(duì)話框。(3)在“新建項(xiàng)目”對(duì)話框中的左窗格選擇“VisualC#項(xiàng)目”,右窗格選擇“Windows應(yīng)用程序”,指定項(xiàng)目名稱和存放位置后,單擊“確定”按鈕。從工具箱中選擇文本框麗,然后抬起鼠標(biāo),在窗體的適當(dāng)位置按下鼠標(biāo)左鍵后拖動(dòng)到適當(dāng)大小,抬起左鍵。利用類似的方法再放置一個(gè)按鈕創(chuàng)。在屬性窗口中將文本框的Text屬性清空,將按鈕的Text屬性改為“確定”。雙擊按鈕,在按鈕的單擊事件中加入代碼。選擇工具欄中的卜運(yùn)行程序。程序代碼】usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;namespaceWindowsWelcome{///<summary>///Form1的摘要說明///</summary>publicclassForm1:System.Windows.Forms.Form{privateSystem.Windows.Forms.TextBoxtextBox1;privateSystem.Windows.Forms.Buttonbutton1;///<summary>///必需的設(shè)計(jì)器變量///</summary>privateSystem.ComponentModel.Containercomponents=null;publicForm1(){////Windows窗體設(shè)計(jì)器支持所必需的//InitializeComponent();////TODO:在InitializeComponent調(diào)用后添加任何構(gòu)造函數(shù)代碼//}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing){if(components!=null){components.Dispose();base.Dispose(disposing);}#regionWindows窗體設(shè)計(jì)器生成的代碼///<summary>///設(shè)計(jì)器支持所需的方法——不要使用代碼編輯器修改此方法的內(nèi)容///</summary>privatevoidInitializeComponent(){this.textBox1=newSystem.Windows.Forms.TextBox();this.button1=newSystem.Windows.Forms.Button();this.SuspendLayout();////textBox1//this.textBox1.Location=newSystem.Drawing.Point(56,32);this.textBox1.Name="textBox1";this.textBox1.Size=newSystem.Drawing.Size(168,21);this.textBox1.TabIndex=0;this.textBox1.Text="";////button1//this.button1.Location=newSystem.Drawing.Point(112,72);this.button1.Name="button1";this.button1.Size=newSystem.Drawing.Size(56,24);this.button1.TabIndex=1;this.button1.Text="確定";this.button1.Click+=newSystem.EventHandler(this.button1Click);////Form1//this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14);this.ClientSize=newSystem.Drawing.Size(280,117);this.Controls.Add(this.button1);this.Controls.Add(this.textBox1);this.Name="Form1";this.Text="Form1";this.ResumeLayout(false);}#endregion///<summary>///應(yīng)用程序的主入口點(diǎn)///</summary>[STAThread]staticvoidMain(){Application.Run(newForm1());}privatevoidbutton1_Click(objectsender,System.EventArgse){textBox1.Text="歡迎"+textBox1.Text+"進(jìn)入C#世界!";}}}本案例的實(shí)現(xiàn)步驟反映了一個(gè)Windows應(yīng)用程序建立的一般步驟。除事件過程的代碼是手工加入的外,其余代碼都是由設(shè)計(jì)器生成的。程序的組成大體包括:導(dǎo)入必要的命名空間usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;聲明命名空間namespaceWindowsWelcome(3)聲明System.Windows.Forms的派生類。在該類中主要包含:?控件的定義。?構(gòu)造函數(shù)Forml():調(diào)用InitializeComponent建立界面。?清理資源函數(shù)Dispose。:窗口關(guān)閉時(shí)調(diào)用,用于清理所有正在使用的資源。?初始化函數(shù)InitializeComponent():建立控件,設(shè)置控件屬性,生成界面。?主函數(shù)Main():程序的運(yùn)行起點(diǎn),用于啟動(dòng)程序,建立窗口對(duì)象。?單擊事件處理函數(shù)button1_Click():處理按鈕單擊事件。1.1.5命名空間命名空間就像在文件系統(tǒng)中用一個(gè)文件夾容納多個(gè)文件一樣,可以看作某些類的一個(gè)容器。通過把類放入命名空間可以把相關(guān)的類組織起來,并且可以避免命名沖突。命名空間既用于程序的“內(nèi)部”組織系統(tǒng),也用于“外部”組織系統(tǒng)(一種向其他程序公開自己擁有的程序元素的方法)。命名空間可以包含其他的命名空間。這種劃分方法的優(yōu)點(diǎn)類似于文件夾。與文件夾不同的是,命名空間只是一種邏輯上的劃分,而不是物理上的存儲(chǔ)分類。1.命名空間聲明namespace關(guān)鍵字用于聲明一個(gè)命名空間。格式如下:namespacename[.name1]...]{類型聲明}其中name,name1為命名空間名,可以是任何合法的標(biāo)識(shí)符。命名空間名可以包含句點(diǎn)。例如:namespaceN1.N2{classA{}classB()}等同于:namespaceN1{namespaceN2{classA{}classB()}}在一個(gè)命名空間中,可以聲明一個(gè)或多個(gè)下列類型:類、接口、結(jié)構(gòu)、枚舉、委托。即使未顯式聲明命名空間,也會(huì)創(chuàng)建默認(rèn)命名空間。該未命名的命名空間(有時(shí)稱為全局命名空間)存在于每一個(gè)文件中。全局命名空間中的任何標(biāo)識(shí)符都可用于命名的命名空間中。命名空間隱式具有公共訪問權(quán),并且這是不可修改的。2.命名空間的使用使用using指令能夠引用給定的命名空間或創(chuàng)建命名空間的別名(using別名)。using[別名=]類或命名空間名;下面的示例顯示了如何為類定義using指令和using別名:usingSystem;//usingdirectiveusingAliasToMyClass=NameSpace1.MyClass;//usingaliasforaclassnamespaceNameSpace1{publicclassMyClass{publicoverridestringToString(){return"YouareinNameSpace1.MyClass";

}}namespaceNameSpace2{classMyClass{}}namespaceNameSpace3{usingNameSpace1; //usingdirectiveusingNameSpace2; //usingdirectiveclassTest{publicstaticvoidMain(){AliasToMyClasssomevar=newAliasToMyClass();Console.WriteLine(somevar);}}}3.系統(tǒng)定義的命名空間命名空間分為兩類:用戶定義的命名空間和系統(tǒng)定義的命名空間。用戶定義的命名空間是在代碼中定義的命名空間。表1-1列出了C#常用的命名空間。表1-1C#常用的命名空間類的描述命名空間類的描述SystemSystem.CollectionSystem.DataSystem.DrawingSystem.IOSystem.NetSystem.Net.SocketsSystem.Runtime.RemotingSystem.SecuritySystemSystem.CollectionSystem.DataSystem.DrawingSystem.IOSystem.NetSystem.Net.SocketsSystem.Runtime.RemotingSystem.SecuritySystem.TextSystem.ThreadingSystem.TimersSystem.WebSvstem.Web.Mail定義通常使用的數(shù)據(jù)類型和數(shù)據(jù)轉(zhuǎn)換的基本.NET類定義列表、隊(duì)列、位數(shù)組合字符串表定義ADO.NET數(shù)據(jù)庫結(jié)構(gòu)提供對(duì)基本圖形功能的訪問允許讀寫數(shù)據(jù)列和文件提供對(duì)Windows網(wǎng)絡(luò)功能的訪問提供對(duì)Windows套接字的訪問提供對(duì)Windows分布式計(jì)算平臺(tái)的訪問提供對(duì)CLR安全許可系統(tǒng)的訪問ASCII、Unicode、UTF-7和UTF-8字符編碼處理多線程編程在指定的時(shí)間間隔引發(fā)一個(gè)事件瀏覽器和Web服務(wù)器功能發(fā)送郵件信息System.Windows.Forms倉U建使用標(biāo)準(zhǔn)Windows圖形接口和基于Windows的應(yīng)用程序System.Windows.Forms1.2C#語言基礎(chǔ)基本編碼規(guī)則1.標(biāo)識(shí)符和保留字程序員對(duì)程序中的各個(gè)元素加以命名時(shí)使用的命名記號(hào)稱為標(biāo)識(shí)符,如:變量名、類名、方法名等。c#語言中,標(biāo)識(shí)符是以字母、下劃線(_)或@開始的一個(gè)字符序列,后面可以跟字母、下劃線、數(shù)字。C#語言區(qū)分大小寫。一般變量名首字母小寫,后面各單詞首字母大寫;而常量、類名、方法、屬性等首字母大寫。具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符使用的標(biāo)識(shí)符稱為保留字,也稱為關(guān)鍵字,如continue、for、new、switch、default等。C#語言中的保留字均用小寫字母表示。如果一定要用C#保留字作標(biāo)識(shí)符,應(yīng)使用@字符作為前綴。2.書寫規(guī)則?每條語句以“;”結(jié)尾。?空行和縮進(jìn)被忽略。?多條語句可以處于同一行,之間用分號(hào)分隔即可。3.注釋有三種類型的注釋語句://注釋一行/*一行或多行注釋*////XML注釋方式“///”符號(hào)是一種特殊的注釋方式,可以利用VisualStudio.NET開發(fā)工具將“///”注釋轉(zhuǎn)換為XML文件。XML常使用的標(biāo)簽有:<code>?</code><parmname="name"/><returns>?</returns><summary>?</summary><value>?</value>數(shù)據(jù)類型1.C#語言中的數(shù)據(jù)類型劃分C#語言的數(shù)據(jù)類型按內(nèi)置和自定義劃分,有內(nèi)置類型和構(gòu)造類型。如圖1-11所示。內(nèi)置類型是C#提供的、無法再分解的一種具體類型。每種內(nèi)置類型都有其對(duì)應(yīng)的公共語言運(yùn)行庫類型(或稱為.NET數(shù)據(jù)類型)。構(gòu)造類型是在內(nèi)置類型基礎(chǔ)上構(gòu)造出來的類型。表1-2

列出了C#包含的內(nèi)置類型。內(nèi)置類型數(shù)據(jù)類型objectstringbyte,sbyteint,uintshort,ushortlong,ulongcharboolfloat內(nèi)置類型數(shù)據(jù)類型’double構(gòu)造類型枚舉數(shù)組結(jié)構(gòu)集合類接口委托decimal構(gòu)造類型枚舉數(shù)組結(jié)構(gòu)集合類接口委托圖1-11按內(nèi)置和自定義劃分的類型表1-2內(nèi)置數(shù)據(jù)類型c#類型.NET類型說 明示 例objectSystem.Object所有其他類型的基類型objectobj=null;stringSystem.String字符串類型,Unicode字符序列strings="hello";sbyteSystem.Sbyte8位有符號(hào)整型sbyteval=12;byteSystem.Byte8位無符號(hào)整型shortval=12;intSystem.Int3232位有符號(hào)整型intval=12;uintSystem.UInt3232位無符號(hào)整型uintval1=12;uintval2=32U;shortSystem.Intl616位有符號(hào)整型shortval1=12;ushortSystem.UIntl616位無符號(hào)整型ushortval1=12;longSystem.Int6464位有符號(hào)整型longval1=12;longval2=12L;ulongSystem.UInt6464位無符號(hào)整型ulongval1=23;ulongval2=23U;ulongval3=56L;ulongval4=78UL;charSystem.Char字符型,一個(gè)Unicode字符charval='h';boolSystem.Boolean布爾型,值為true或falseboolval1=true;boolval2=false;floatSystem.Float32位單精度浮點(diǎn)型,精度為7位floatval=12.3F;doubleSystem.Double64位雙精度浮點(diǎn)型,精度為15?16位doubleval=23.12D;decimalSystem.Decimal128位小數(shù)類型,精度為28?29位decimalval=1.23M;按數(shù)據(jù)的存儲(chǔ)方式劃分,有值類型和引用類型,如圖1-12所示。值類型在其內(nèi)存空間中包含實(shí)際的數(shù)據(jù),而引用類型中存儲(chǔ)的是一個(gè)指針,該指針指向存儲(chǔ)數(shù)據(jù)的內(nèi)存位置。值類型的內(nèi)存開銷小,訪問速度快,但是缺乏面向?qū)ο蟮奶卣?;引用類型的?nèi)存開銷大(在堆上分配內(nèi)存),訪問速度稍慢。2.值類型各種值類型總是含有對(duì)應(yīng)該類型的一個(gè)值。每當(dāng)把一個(gè)值賦給一個(gè)值類型時(shí),該值實(shí)際上被復(fù)制了。值類型數(shù)據(jù)類型所有的數(shù)值類型boolean、中包含實(shí)際的數(shù)據(jù),而引用類型中存儲(chǔ)的是一個(gè)指針,該指針指向存儲(chǔ)數(shù)據(jù)的內(nèi)存位置。值類型的內(nèi)存開銷小,訪問速度快,但是缺乏面向?qū)ο蟮奶卣?;引用類型的?nèi)存開銷大(在堆上分配內(nèi)存),訪問速度稍慢。2.值類型各種值類型總是含有對(duì)應(yīng)該類型的一個(gè)值。每當(dāng)把一個(gè)值賦給一個(gè)值類型時(shí),該值實(shí)際上被復(fù)制了。值類型數(shù)據(jù)類型所有的數(shù)值類型boolean、char類型所有的枚舉類型結(jié)構(gòu)類型引用類型Y數(shù)組string類型類類型接口類型委托類型圖1-12按數(shù)據(jù)的存儲(chǔ)方式劃分的類型相比,對(duì)于引用類型,僅是引用被復(fù)制了,而實(shí)際的值仍然保留在相同的內(nèi)存位置。C#的值類型可以歸類如下:?簡(jiǎn)單類型(Simpletypes)?枚舉類型(Enumerationtypes)?結(jié)構(gòu)類型(Structuretypes)C#的簡(jiǎn)單類型具有如下特性:第一,它們都是NET系統(tǒng)類型的別名;第二,由簡(jiǎn)單類型組成的常量表達(dá)式僅在編譯時(shí)而不是運(yùn)行時(shí)受檢測(cè);最后,簡(jiǎn)單類型可以按字面被初始化。C#簡(jiǎn)單類型包括:整數(shù)類型、布爾類型、字符類型(整型的一種特殊情況、實(shí)數(shù)類型以及枚舉類型。(1)整數(shù)類型C#中定義了8種整數(shù)類型:字節(jié)型(sbyte)、無符號(hào)字節(jié)型(byte)、短整型(short)、無符號(hào)短整型(ushort)、整型(int)、無符號(hào)整型(uint)、長(zhǎng)整型(long)、無符號(hào)長(zhǎng)整型(ulong)。表示方法有:?十進(jìn)制整數(shù)女口:123,-456,0。?十六進(jìn)制整數(shù)以0x或0X開頭,如:0x123表示十進(jìn)制數(shù)291,-0X12表示十進(jìn)制數(shù)-18。?無符號(hào)整數(shù)可以用正整數(shù)表示無符號(hào)數(shù),也可以在數(shù)字的后面加上U或u,如125U。?長(zhǎng)整數(shù)可以在數(shù)字的后面加上L或l,如125L。2)實(shí)數(shù)類型有三種實(shí)型:float、double、decimal。其中double的取值范圍最廣,decimal取值范圍其次,但它的精度高。實(shí)型數(shù)據(jù)的表示形式有:十進(jìn)制數(shù)形式由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如:0.123,1.23,123.0。?科學(xué)計(jì)數(shù)法形式女口:123e3或123E3。float型的值在數(shù)字后加f或F,如:1.23f。double型的值在數(shù)字后加D或d,如:12.8d。decimal型的值在數(shù)字后加M或m,如:99.2m。(3)字符類型字符型變量類型為char,它在機(jī)器中占16位,其范圍為0?65535,每個(gè)數(shù)字代表一個(gè)Unicode字符。字符一般是用單引號(hào)括起來的一個(gè)字符,如'a','A',也可以寫成轉(zhuǎn)義字符、十六進(jìn)制轉(zhuǎn)換碼或Unicode表示形式。此外,整數(shù)也可以顯式地轉(zhuǎn)換為字符。常用的轉(zhuǎn)義字符如表1-3所示。表1-3常用的轉(zhuǎn)義字符轉(zhuǎn)義符字符名字符的Unicode值轉(zhuǎn)義符字符名字符的Unicode值\'單引號(hào)0x0027\f換頁0x000c\"雙引號(hào)0x0022\n新行0x000A\\反斜杠0x005c\r回車0x000D\0空字符0x0000\t水平制表符0x0009\a警告(產(chǎn)生蜂鳴)0x0007\v垂直制表符0x000B\b退格0x0008例如:charch1='A';charch2='\x0058'; //十六進(jìn)制charch3=(char)88; //整數(shù)轉(zhuǎn)換charch4='\u0058';//Unicode形式charch5='\r'; //轉(zhuǎn)義字符(4)布爾類型布爾型數(shù)據(jù)只有true和false兩個(gè)值,且它們不對(duì)應(yīng)于任何整數(shù)值,在內(nèi)存中占用4個(gè)字節(jié)。與C和C++相比,在C#中,true值不再為任何非零值。(5)枚舉類型枚舉(enum)是值類型的一種特殊形式,它從System.Enum繼承而來,并為基礎(chǔ)類型的值提供替代名稱。枚舉類型有名稱、基礎(chǔ)類型和一組字段?;A(chǔ)類型必須是一個(gè)除char類型外的內(nèi)置的有符號(hào)(或無符號(hào))整數(shù)類型(如Byte、Int32或UInt64)。enum關(guān)鍵字用于聲明枚舉類型,基本格式如下:[修飾符]enum枚舉類型名[:基類型]{由逗號(hào)分隔的枚舉數(shù)標(biāo)識(shí)符}[;]枚舉元素的默認(rèn)基礎(chǔ)類型為int。默認(rèn)情況下,第一個(gè)枚舉數(shù)的值為0后面每個(gè)枚舉數(shù)的值依次遞增1。例如:enumDays{Sun,Mon,Tue,Wed,Thu,Fri,sat}; //Sun為0,Mon為1,Tue為2, enumDays{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};//第一個(gè)成員值從1開始enumMonthNames{January=31,February=28,March=31,April=30};//指定值在定義枚舉類型時(shí),可以選擇基類型,但可以使用的基類型僅限于long、int、short和byte。例如:enumMonthNames:byte{January=31,February=28,March=31,April=30};注意:下列寫法是錯(cuò)誤的:enumnum:byte{x1=255,x2};這里因?yàn)閤l=255,x2應(yīng)該是256,而byte型的范圍是0?256。案例1-3】定義一個(gè)職稱枚舉類型,輸出類型中所有枚舉常量。程序運(yùn)行后顯示結(jié)果如圖1-13所示。圖l-l3職稱枚舉型案例運(yùn)行界面【技術(shù)要點(diǎn)】定義一個(gè)職稱枚舉類型,有4個(gè)枚舉常量Prof(教授),AProf(副教授),Lect(講師),TAssi(助教)。再定義一個(gè)方法,該方法有一個(gè)參數(shù)用來接受一個(gè)枚舉類型的值,然后返回一個(gè)字符串?!境绦虼a】usingSystem;namespaceExam1_3{classClass1{enumZC{Prof,AProf,Lect,TAssi};staticstringgetZCAndValue(ZCz){stringresult;switch(z){caseZC.Prof:result=String.Format("Prof={0}",(int)z);break;ca

溫馨提示

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

評(píng)論

0/150

提交評(píng)論