C#編程語言基礎_第1頁
C#編程語言基礎_第2頁
C#編程語言基礎_第3頁
C#編程語言基礎_第4頁
C#編程語言基礎_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

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

InitializeCorn口匚「曰

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

}}}程序中的第一行語句“usingSystem;”的作用是導入命名空間,該語句類似于C和C++中的#include命令。導入命名空間之后,就可以自由使用其中的元素了。System是.NET框架提供的最基本的命名空間之一,Console是System命名空間中包含的系統類庫中已定義的一個類。利用該類的ReadLine()和WriteLine()方法可以進行輸入輸出。{0}代替WriteLine方法的參數表中緊隨格式串后的第一個變量。可以用該技術格式化多個變量。例如:Console.WriteLine("Hello{0}{1},from{2}",strFirstname,strLastname,strCity);namespace語句聲明了一個命名空間Welcome。每個C#程序可以包含一個或多個命名空間。類、結構、接口、枚舉、委托等類型都包含在命名空間中。class為定義類的關鍵字,類的名稱為Classi。C#程序的基本單位是類。程序中的語句“staticvoidMain(string[]args);”為類Classi聲明了一個主方法。在C#程序中,程序的執行總是從Main()方法開始的,一個程序只能包含一個主方法。可以通過Windows記事本來編寫程序。保存的文件名為Welcome.cs。然后從開始菜單中選擇“程序”―“MicrosoftVisualStudio.NET2003”—“VisualStudio.NET工具” “VisualStudio.NET命令行提示”命令,將會出現命令行。在命令行中輸入命令“CSC盤符\目錄\Welcome.cs”,回車即可生成可執行文件Welcome.exe。執行Welcome即可看到運行結果。2.圖形界面程序案例1-2】第一個圖形界面程序。設計一個程序,界面上用一個文本框輸入姓名,單擊“確定”按鈕后,在文本框中顯圖1-10第一個圖形界面程序示“歡迎XXX進入C#世界!”,運行結果如圖1-10所示。圖1-10第一個圖形界面程序在按鈕的單擊事件privatevoidbutton1_Click(objectsender,System.EventArgse)中取出文本框中的內容,然后與“歡迎”及“進入C#世界!”相連,再賦給文本框的Text的屬性。【實現步驟】(1)啟動VisualStudio.NET。2)選擇主菜單“文件”—“新建”—“項目”,打開“新建項目”對話框。(3)在“新建項目”對話框中的左窗格選擇“VisualC#項目”,右窗格選擇“Windows應用程序”,指定項目名稱和存放位置后,單擊“確定”按鈕。從工具箱中選擇文本框麗,然后抬起鼠標,在窗體的適當位置按下鼠標左鍵后拖動到適當大小,抬起左鍵。利用類似的方法再放置一個按鈕創。在屬性窗口中將文本框的Text屬性清空,將按鈕的Text屬性改為“確定”。雙擊按鈕,在按鈕的單擊事件中加入代碼。選擇工具欄中的卜運行程序。程序代碼】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>///必需的設計器變量///</summary>privateSystem.ComponentModel.Containercomponents=null;publicForm1(){////Windows窗體設計器支持所必需的//InitializeComponent();////TODO:在InitializeComponent調用后添加任何構造函數代碼//}///<summary>///清理所有正在使用的資源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing){if(components!=null){components.Dispose();base.Dispose(disposing);}#regionWindows窗體設計器生成的代碼///<summary>///設計器支持所需的方法——不要使用代碼編輯器修改此方法的內容///</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>///應用程序的主入口點///</summary>[STAThread]staticvoidMain(){Application.Run(newForm1());}privatevoidbutton1_Click(objectsender,System.EventArgse){textBox1.Text="歡迎"+textBox1.Text+"進入C#世界!";}}}本案例的實現步驟反映了一個Windows應用程序建立的一般步驟。除事件過程的代碼是手工加入的外,其余代碼都是由設計器生成的。程序的組成大體包括:導入必要的命名空間usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;聲明命名空間namespaceWindowsWelcome(3)聲明System.Windows.Forms的派生類。在該類中主要包含:?控件的定義。?構造函數Forml():調用InitializeComponent建立界面。?清理資源函數Dispose。:窗口關閉時調用,用于清理所有正在使用的資源。?初始化函數InitializeComponent():建立控件,設置控件屬性,生成界面。?主函數Main():程序的運行起點,用于啟動程序,建立窗口對象。?單擊事件處理函數button1_Click():處理按鈕單擊事件。1.1.5命名空間命名空間就像在文件系統中用一個文件夾容納多個文件一樣,可以看作某些類的一個容器。通過把類放入命名空間可以把相關的類組織起來,并且可以避免命名沖突。命名空間既用于程序的“內部”組織系統,也用于“外部”組織系統(一種向其他程序公開自己擁有的程序元素的方法)。命名空間可以包含其他的命名空間。這種劃分方法的優點類似于文件夾。與文件夾不同的是,命名空間只是一種邏輯上的劃分,而不是物理上的存儲分類。1.命名空間聲明namespace關鍵字用于聲明一個命名空間。格式如下:namespacename[.name1]...]{類型聲明}其中name,name1為命名空間名,可以是任何合法的標識符。命名空間名可以包含句點。例如:namespaceN1.N2{classA{}classB()}等同于:namespaceN1{namespaceN2{classA{}classB()}}在一個命名空間中,可以聲明一個或多個下列類型:類、接口、結構、枚舉、委托。即使未顯式聲明命名空間,也會創建默認命名空間。該未命名的命名空間(有時稱為全局命名空間)存在于每一個文件中。全局命名空間中的任何標識符都可用于命名的命名空間中。命名空間隱式具有公共訪問權,并且這是不可修改的。2.命名空間的使用使用using指令能夠引用給定的命名空間或創建命名空間的別名(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.系統定義的命名空間命名空間分為兩類:用戶定義的命名空間和系統定義的命名空間。用戶定義的命名空間是在代碼中定義的命名空間。表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定義通常使用的數據類型和數據轉換的基本.NET類定義列表、隊列、位數組合字符串表定義ADO.NET數據庫結構提供對基本圖形功能的訪問允許讀寫數據列和文件提供對Windows網絡功能的訪問提供對Windows套接字的訪問提供對Windows分布式計算平臺的訪問提供對CLR安全許可系統的訪問ASCII、Unicode、UTF-7和UTF-8字符編碼處理多線程編程在指定的時間間隔引發一個事件瀏覽器和Web服務器功能發送郵件信息System.Windows.Forms倉U建使用標準Windows圖形接口和基于Windows的應用程序System.Windows.Forms1.2C#語言基礎基本編碼規則1.標識符和保留字程序員對程序中的各個元素加以命名時使用的命名記號稱為標識符,如:變量名、類名、方法名等。c#語言中,標識符是以字母、下劃線(_)或@開始的一個字符序列,后面可以跟字母、下劃線、數字。C#語言區分大小寫。一般變量名首字母小寫,后面各單詞首字母大寫;而常量、類名、方法、屬性等首字母大寫。具有專門的意義和用途,不能當作一般的標識符使用的標識符稱為保留字,也稱為關鍵字,如continue、for、new、switch、default等。C#語言中的保留字均用小寫字母表示。如果一定要用C#保留字作標識符,應使用@字符作為前綴。2.書寫規則?每條語句以“;”結尾。?空行和縮進被忽略。?多條語句可以處于同一行,之間用分號分隔即可。3.注釋有三種類型的注釋語句://注釋一行/*一行或多行注釋*////XML注釋方式“///”符號是一種特殊的注釋方式,可以利用VisualStudio.NET開發工具將“///”注釋轉換為XML文件。XML常使用的標簽有:<code>?</code><parmname="name"/><returns>?</returns><summary>?</summary><value>?</value>數據類型1.C#語言中的數據類型劃分C#語言的數據類型按內置和自定義劃分,有內置類型和構造類型。如圖1-11所示。內置類型是C#提供的、無法再分解的一種具體類型。每種內置類型都有其對應的公共語言運行庫類型(或稱為.NET數據類型)。構造類型是在內置類型基礎上構造出來的類型。表1-2

列出了C#包含的內置類型。內置類型數據類型objectstringbyte,sbyteint,uintshort,ushortlong,ulongcharboolfloat內置類型數據類型’double構造類型枚舉數組結構集合類接口委托decimal構造類型枚舉數組結構集合類接口委托圖1-11按內置和自定義劃分的類型表1-2內置數據類型c#類型.NET類型說 明示 例objectSystem.Object所有其他類型的基類型objectobj=null;stringSystem.String字符串類型,Unicode字符序列strings="hello";sbyteSystem.Sbyte8位有符號整型sbyteval=12;byteSystem.Byte8位無符號整型shortval=12;intSystem.Int3232位有符號整型intval=12;uintSystem.UInt3232位無符號整型uintval1=12;uintval2=32U;shortSystem.Intl616位有符號整型shortval1=12;ushortSystem.UIntl616位無符號整型ushortval1=12;longSystem.Int6464位有符號整型longval1=12;longval2=12L;ulongSystem.UInt6464位無符號整型ulongval1=23;ulongval2=23U;ulongval3=56L;ulongval4=78UL;charSystem.Char字符型,一個Unicode字符charval='h';boolSystem.Boolean布爾型,值為true或falseboolval1=true;boolval2=false;floatSystem.Float32位單精度浮點型,精度為7位floatval=12.3F;doubleSystem.Double64位雙精度浮點型,精度為15?16位doubleval=23.12D;decimalSystem.Decimal128位小數類型,精度為28?29位decimalval=1.23M;按數據的存儲方式劃分,有值類型和引用類型,如圖1-12所示。值類型在其內存空間中包含實際的數據,而引用類型中存儲的是一個指針,該指針指向存儲數據的內存位置。值類型的內存開銷小,訪問速度快,但是缺乏面向對象的特征;引用類型的內存開銷大(在堆上分配內存),訪問速度稍慢。2.值類型各種值類型總是含有對應該類型的一個值。每當把一個值賦給一個值類型時,該值實際上被復制了。值類型數據類型所有的數值類型boolean、中包含實際的數據,而引用類型中存儲的是一個指針,該指針指向存儲數據的內存位置。值類型的內存開銷小,訪問速度快,但是缺乏面向對象的特征;引用類型的內存開銷大(在堆上分配內存),訪問速度稍慢。2.值類型各種值類型總是含有對應該類型的一個值。每當把一個值賦給一個值類型時,該值實際上被復制了。值類型數據類型所有的數值類型boolean、char類型所有的枚舉類型結構類型引用類型Y數組string類型類類型接口類型委托類型圖1-12按數據的存儲方式劃分的類型相比,對于引用類型,僅是引用被復制了,而實際的值仍然保留在相同的內存位置。C#的值類型可以歸類如下:?簡單類型(Simpletypes)?枚舉類型(Enumerationtypes)?結構類型(Structuretypes)C#的簡單類型具有如下特性:第一,它們都是NET系統類型的別名;第二,由簡單類型組成的常量表達式僅在編譯時而不是運行時受檢測;最后,簡單類型可以按字面被初始化。C#簡單類型包括:整數類型、布爾類型、字符類型(整型的一種特殊情況、實數類型以及枚舉類型。(1)整數類型C#中定義了8種整數類型:字節型(sbyte)、無符號字節型(byte)、短整型(short)、無符號短整型(ushort)、整型(int)、無符號整型(uint)、長整型(long)、無符號長整型(ulong)。表示方法有:?十進制整數女口:123,-456,0。?十六進制整數以0x或0X開頭,如:0x123表示十進制數291,-0X12表示十進制數-18。?無符號整數可以用正整數表示無符號數,也可以在數字的后面加上U或u,如125U。?長整數可以在數字的后面加上L或l,如125L。2)實數類型有三種實型:float、double、decimal。其中double的取值范圍最廣,decimal取值范圍其次,但它的精度高。實型數據的表示形式有:十進制數形式由數字和小數點組成,且必須有小數點,如:0.123,1.23,123.0。?科學計數法形式女口:123e3或123E3。float型的值在數字后加f或F,如:1.23f。double型的值在數字后加D或d,如:12.8d。decimal型的值在數字后加M或m,如:99.2m。(3)字符類型字符型變量類型為char,它在機器中占16位,其范圍為0?65535,每個數字代表一個Unicode字符。字符一般是用單引號括起來的一個字符,如'a','A',也可以寫成轉義字符、十六進制轉換碼或Unicode表示形式。此外,整數也可以顯式地轉換為字符。常用的轉義字符如表1-3所示。表1-3常用的轉義字符轉義符字符名字符的Unicode值轉義符字符名字符的Unicode值\'單引號0x0027\f換頁0x000c\"雙引號0x0022\n新行0x000A\\反斜杠0x005c\r回車0x000D\0空字符0x0000\t水平制表符0x0009\a警告(產生蜂鳴)0x0007\v垂直制表符0x000B\b退格0x0008例如:charch1='A';charch2='\x0058'; //十六進制charch3=(char)88; //整數轉換charch4='\u0058';//Unicode形式charch5='\r'; //轉義字符(4)布爾類型布爾型數據只有true和false兩個值,且它們不對應于任何整數值,在內存中占用4個字節。與C和C++相比,在C#中,true值不再為任何非零值。(5)枚舉類型枚舉(enum)是值類型的一種特殊形式,它從System.Enum繼承而來,并為基礎類型的值提供替代名稱。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是一個除char類型外的內置的有符號(或無符號)整數類型(如Byte、Int32或UInt64)。enum關鍵字用于聲明枚舉類型,基本格式如下:[修飾符]enum枚舉類型名[:基類型]{由逗號分隔的枚舉數標識符}[;]枚舉元素的默認基礎類型為int。默認情況下,第一個枚舉數的值為0后面每個枚舉數的值依次遞增1。例如:enumDays{Sun,Mon,Tue,Wed,Thu,Fri,sat}; //Sun為0,Mon為1,Tue為2, enumDays{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};//第一個成員值從1開始enumMonthNames{January=31,February=28,March=31,April=30};//指定值在定義枚舉類型時,可以選擇基類型,但可以使用的基類型僅限于long、int、short和byte。例如:enumMonthNames:byte{January=31,February=28,March=31,April=30};注意:下列寫法是錯誤的:enumnum:byte{x1=255,x2};這里因為xl=255,x2應該是256,而byte型的范圍是0?256。案例1-3】定義一個職稱枚舉類型,輸出類型中所有枚舉常量。程序運行后顯示結果如圖1-13所示。圖l-l3職稱枚舉型案例運行界面【技術要點】定義一個職稱枚舉類型,有4個枚舉常量Prof(教授),AProf(副教授),Lect(講師),TAssi(助教)。再定義一個方法,該方法有一個參數用來接受一個枚舉類型的值,然后返回一個字符串。【程序代碼】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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論