




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C#C#程序設計第程序設計第1 1章章C#C#語法基礎語法基礎目目 錄錄1.1 C#和和.NET集成集成開發環境開發環境Visual Studio 20101.2 認識認識C#程序程序1.3 數據類型數據類型1.4 變量和常量變量和常量1.5 運算符的應用運算符的應用1.6 C#語句結構語句結構本章學習目標本章學習目標 v 本章主要講解C#概述和.NET集成開發環境,以及C#數據類型,變量和常量,運算符的應用,C#語句結構等內容。通過本章學習,讀者應該掌握以下內容: 了解C#語言特點 理解C#程序的結構。 掌握變量和常量,運算符的應用,C#語句結構的使用。1.1 C#和.NET集成開發環境Vi
2、sual Studio 2010v 1.1.1 認識C#v C#(讀作“C sharp”)是一種編程語言,它是為生成在 .NET Framework 上運行的各種應用程序而設計的。 C# 簡單、功能強大、類型安全,而且是面向對象的。 C# 憑借在許多方面的創新,在保持 C 語言風格的表現力和雅致特征的同時,實現了應用程序的快速開發。v C# 語法表現力強,而且簡單易學。C# 的大括號語法使任何熟悉 C、C+ 或 Java 的人都可以立即上手。了解上述任何一種語言的開發人員通常在很短的時間內就可以開始使用 C# 高效地進行工作。C# 的生成過程比 C 和 C+ 簡單,比 Java 更為靈活。 沒
3、有單獨的頭文件,也不要求按照特定順序聲明方法和類型。 C# 源文件可以定義任意數量的類、結構、接口和事件。1.1.1 認識認識C#vC# 語法簡化了 C+ 的諸多復雜性,并提供了很多強大的功能,例如可為 null 的值類型、枚舉、委托、lambda 表達式和直接內存訪問,這些都是 Java 所不具備的。C# 支持泛型方法和類型,從而提供了更出色的類型安全和性能。C# 還提供了迭代器,允許集合類的實施者定義自定義的迭代行為,以便容易被客戶端代碼使用。語言集成查詢 (LINQ) 表達式使強類型查詢成為了一流的語言構造。 1.1.1 認識認識C#vC# 語法簡化了 C+ 的諸多復雜性,并提供了很多強
4、大的功能,例如可為 null 的值類型、枚舉、委托、lambda 表達式和直接內存訪問,這些都是 Java 所不具備的。C# 支持泛型方法和類型,從而提供了更出色的類型安全和性能。C# 還提供了迭代器,允許集合類的實施者定義自定義的迭代行為,以便容易被客戶端代碼使用。語言集成查詢 (LINQ) 表達式使強類型查詢成為了一流的語言構造。 1.1.1 認識認識C#v作為一種面向對象的語言,C# 支持封裝、繼承和多態性的概念。 所有的變量和方法,包括 Main 方法(應用程序的入口點),都封裝在類定義中。 類可能直接從一個父類繼承,但它可以實現任意數量的接口。 重寫父類中的虛方法的各種方法要求ove
5、rride關鍵字作為一種避免意外重定義的方式。 在 C# 中,結構類似于一個輕量類;它是一種堆棧分配的類型,可以實現接口,但不支持繼承。 1.1.1 認識認識C#v在 C# 中,如果必須與其他 Windows 軟件(如 COM 對象或本機 Win32 DLL)交互,則可以通過一個稱為“互操作”的過程來實現。互操作使 C# 程序能夠完成本機 C+ 應用程序可以完成的幾乎任何任務。 1.1.2 安裝Visual Studio 2010vMicrosoft Visual Studio 2010是面向Windows Vista、Office 2010、Web 2.0的下一代開發工具,是對Visual
6、Studio 2007的升級。v在安裝Visual Studio 2010之前,首先確保IE瀏覽器版本在6.0或更高,同時,可安裝Visual Studio 2010開發環境的計算機配置要求如下所示。1.1.2 安裝Visual Studio 2010v 1.軟件要求v Visual Studio 2010 可以安裝在以下操作系統上:v Windows XP (x86) Service Pack 3 - 除 Starter Edition 之外的所有版本v Windows Vista (x86 & x64) Service Pack 1 - 除 Starter Edition 之外的所
7、有版本v Windows 7 (x86 & x64)v Windows Server 2003 (x86 & x64) Service Pack 2v Windows Server 2003 R2 (x86 & x64)v Windows Server 2008 (x86 & x64) Service Pack 2v Windows Server 2008 R2 (x64)v 支持的體系結構:v 32 位 (x86)v 64 位 (x64)1.1.2 安裝Visual Studio 2010v2.硬件要求v配有 1.6GHz 或更快處理器的計算機v1024MB
8、內存v3GB 可用硬盤空間v5400 RPM 硬盤驅動器vDirectX 9 視頻卡,1280 x 1024 或更高顯示分辨率vDVD-ROM 驅動器1.1.2 安裝Visual Studio 2010v1. 將Visual Studio 2010安裝盤放到光驅中,光盤自動運行后會進入安裝程序文件界面,如果光盤不能自動運行,可以雙擊setup.exe可執行文件。之后安裝程序會自動跳轉到Visual Studio 2010安裝程序界面。1.1.2 安裝Visual Studio 2010v2.進入Visual Studio 2010界面后可以看到這里有兩個安裝選項:安裝Microsoft Vis
9、ual Studio 2010和檢查Service Release,一般情況下單擊第一項【安裝Microsoft Visual Studio 2010】 來開始Visual Studio 2010的安裝。如圖1-2所示。1.1.2 安裝Visual Studio 2010vVisual Studio 2010的安裝程序在進行Visual Studio 2010的安裝前首先會加載安裝組件,這些組件為Visual Studio 2010的順利安裝提供了基礎保障,用戶必須等待安裝程序完成加載組件后才能繼續后面的安裝步驟。1.1.2 安裝Visual Studio 2010v在安裝組件加載完畢后,單擊
10、【下一步】按鈕開始Visual Studio 2010的安裝,在這個界面里用戶可以指定Visual Studio 2010的安裝路徑 1.1.2 安裝Visual Studio 2010v在用戶做好相應的選擇后,單擊【安裝】按鈕就開始Visual Studio 2010的安裝 安裝完畢后就會出現安裝成功界面,說安裝完畢后就會出現安裝成功界面,說明已經在本地計算機中成功的安裝好了明已經在本地計算機中成功的安裝好了Visual Studio 2010。 1.1.3 Visual Studio 2010的界面介紹v1.主窗口1.1.3 Visual Studio 2010的界面介紹vVisual S
11、tudio 2010主窗口包括多個子窗口,左側是數據源和工具箱,當前處于折疊狀態;中間是文檔窗口,用于應用程序代碼的編寫和樣式控制;下方是錯誤列表窗口,用于顯示錯誤信息;右側是資源管理器窗口和屬性窗口,用于呈現解決方案,以及頁面及控件的相應的屬性。1.1.3 Visual Studio 2010的界面介紹v2.文檔窗口v文檔窗口用于代碼的編寫和樣式設計。當用戶開發的是基于Web的ASP.NET應用程序時,文檔窗口是以Web的形式呈現給用戶,而代碼視圖則是以HTML代碼的形式呈現給用戶的,而如果用戶開發的是基于Windows的應用程序,則文檔窗口將會呈現應用程序的窗口或代碼 1.1.3 Visu
12、al Studio 2010的界面介紹Windows程序開發文檔窗口程序開發文檔窗口 Web程序開發文檔窗口程序開發文檔窗口 1.1.3 Visual Studio 2010的界面介紹v當開發人員在進行不同的應用程序開發時,文檔窗口也會自動呈現為不同的樣式以方便開發人員使用。例如在ASP.NET應用程序中,其文檔窗口包括頁面標簽,視圖欄,標簽導航欄三個部分。 1.1.3 Visual Studio 2010的界面介紹 頁面標簽:當進行多個頁面進行開發時,會呈現多個頁面標簽,當開發人員需要在不同的頁面之間切換時可以通過頁面標簽進行快速切換。 視圖欄:用戶可以通過視圖欄進行視圖的切換,Visual
13、 Studio 2010提供“設計”,“拆分”和“源代碼”三種視圖,開發人員可以選擇不同的視圖進行頁面樣式控制和代碼的開發。 標簽導航欄:標簽導航欄能夠進行不同的標簽的選擇,可以通過標簽導航欄進行標簽或標簽內內容的選擇。v開發人員可以靈活運用主文檔窗口進行高效的應用程序開發, Visual Studio 2010的視圖欄窗口提供了拆分窗口,拆分窗口允許開發人員一邊進行頁面樣式開發和代碼編寫。1.1.3 Visual Studio 2010的界面介紹v3.工具箱vVisual Studio 2010主窗口的左側為開發人員提供了工具箱,工具箱中包含了Visual Studio 2010對.NET應
14、用程序所支持的控件。對于不同的應用程序開發而言,在工具箱中所顯示出來的工具也不同。 1.1.3 Visual Studio 2010的界面介紹v 系統默認為開發人員提供了數十種控件用于系統的開發,用戶也可以添加工具箱選項卡進行自定義組件的存放。Visual Studio 2010為開發人員提供了不同類別的控件,這些控件被歸為不同的類別,開發人員可以按照需求進行相應類別的控件的使用。開發人員還能夠在工具箱中添加現有的控件。右擊工具箱空白區域,在下拉菜單中選擇【選擇項】選項,系統會彈出窗口用于開發人員對自定義控件的添加。 1.1.3 Visual Studio 2010的界面介紹v4.解決方案管理
15、器v在Visual Studio 2010的開發中,為了能夠方便開發人員進行應用程序開發,在Visual Studio 2010主窗口的右側會顯示一個解決方案管理器。開發人員可以在解決方案管理器中進行相應的文件的選擇,雙擊后相應文件的代碼就會顯示在主窗口,開發人員還可以單擊解決方案管理器下方的服務器資源管理器窗口進行服務器資源的管理,服務器資源管理器還允許開發人員在Visual Studio 2010中進行表的創建和修改。 1.1.3 Visual Studio 2010的界面介紹解決方案管理器解決方案管理器 服務器資源管理器服務器資源管理器 1.1.3 Visual Studio 2010的
16、界面介紹v5.屬性窗口vVisual Studio 2010提供了非常多的控件,開發人員能夠使用Visual Studio 2010提供的控件進行應用程序的開發。每個控件都有自己的屬性,通過配置不同的控件的屬性可以實現復雜的功能。 1.1.3 Visual Studio 2010的界面介紹v6.錯誤列表窗口v在應用程序的開發中,通常會遇到錯誤,這些錯誤會在錯誤列表窗口中呈現,開發人員可以單擊相應的錯誤進行錯誤的跳轉。如果應用程序中出現編程錯誤或異常,系統會在錯誤列表窗口呈現。 1.1.3 Visual Studio 2010的界面介紹v在錯誤列表窗口中包含錯誤、警告和消息選項卡,這些選項卡中的
17、錯誤的安全級別不盡相同。對于錯誤選項卡中的錯誤信息,通常是語法上的錯誤,如果存在語法上的錯誤則不允許應用程序的運行,而對于警告和消息選項卡中信息安全級別較低,只是作為警告而存在,通常情況下不會危害應用程序的運行和使用。 警告選項卡 1.2 認識認識C#程序程序 v1.2.1 命名空間的定義和使用v使用 C# 編程時,通過兩種方式來大量使用命名空間。首先,.NET Framework 使用命名空間來組織它的眾多類,如下所示:vSystem.Console.WriteLine(Hello World!);1.2 認識認識C#程序程序 vSystem 是一個命名空間,Console 是該命名空間中的
18、類。可以使用 using 關鍵字,因此不必使用完整的名稱,如以下示例所示:vusing System;vConsole.WriteLine(Hello);vConsole.WriteLine(World!);1.2 認識認識C#程序程序 v 在較大的編程項目中,聲明自己的命名空間可以幫助控制類名稱和方法名稱的范圍。 使用namespace關鍵字可聲明命名空間,如以下示例所示: v namespace SampleNamespacev v class SampleClassv v public void SampleMethod()v v System.Console.WriteLine(v S
19、ampleMethod inside SampleNamespace);v v v 1.2 認識認識C#程序程序 v命名空間具有以下屬性:v組織大型代碼項目。v使用“.”運算符將它們分隔。vusing directive 不必為每個類指定命名空間的名稱。vglobal 命名空間是“根”命名空間:global:System 始終引用 .NET Framework 命名空間 System。1.2 認識認識C#程序程序 v1.2.2 指示符usingvusing 指令有兩個用途:v允許在命名空間中使用類型,這樣,我們就不必在該命名空間中限定某個類型的使用:vusing System.Text;v為命
20、名空間或類型創建別名。 這稱為“using 別名指令”。 vusing Project = PC.MyCompany.Project;vusing 關鍵字還用來創建 using 語句,此類語句有助于確保正確處理 IDisposable 對象(如文件和字體)。1.2 認識認識C#程序程序 v1.2.3 class關鍵字v類是使用關鍵字class聲明的,如下面的示例所示:vclass TestClassvv / Methods, properties, fields, events, delegates v / and nested classes go here.v1.2 認識認識C#程序程序
21、v 1.2.4 聲明main方法v Main方法是C# 控制臺應用程序或窗口應用程序的入口點。 (庫和服務不要求將 Main 方法作為入口點。)應用程序啟動時,Main方法是第一個調用的方法。 v C# 程序中只能有一個入口點。如果您有多個類都包含 Main 方法,則必須使用 /main 編譯器選項編譯您的程序,以指定用作入口點的Main方法。 v class TestClassv v static void Main(string args)v v / Display the number of command line arguments:v System.Console.WriteLin
22、e(args.Length);v v 1.2 認識認識C#程序程序 v 1.2.5 給C#程序添加說明注釋v C#使用傳統的C風格的注釋方式,即:v 單行注釋:/ .v 多行注釋:/ * . * /v 除了C風格的注釋外,C#還可以根據特定的注釋自動創建XML格式的文檔說明。這些注釋都是單行注釋,但都以3個斜杠 / 開頭,注釋以后可以自動生成說明文檔。在這些注釋中,可以把包含類型和類型成員的文檔說明的XML標識符放在代碼中。v 還有一種折疊注釋:#region,可以將代碼折疊。v 但是只有#region所在行后面的字符被視作注釋文字,而其它位于#region和#endregion之內的代碼是有
23、效的,僅屬于被折疊范圍。1.3 數據類型數據類型 v1.3.1 值類型v值類型主要由兩類組成: 結構 枚舉v結構分為以下幾類: Numeric(數值)類型v整型v浮點型vdecimal bool 用戶定義的結構。1.3 數據類型數據類型 v值類型的主要功能 v基于值類型的變量直接包含值。將一個值類型變量賦給另一個值類型變量時,將復制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復制對對象的引用,而不復制對象本身。 v所有的值類型均隱式派生自 System.ValueType。1.3 數據類型數據類型 v與引用類型不同,不能從值類型派生出新的類型。但與引用類型相同的是,結構也可以實現
24、接口。v與引用類型不同,值類型無法包含null值。然而,可以為null的類型功能確實允許將 null 賦給值類型。v每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。1.3 數據類型數據類型 v簡單類型的主要功能:v所有的簡單類型(C# 語言的組成部分)均為 .NET Framework 系統類型的別名。 例如,int 是 System.Int32 的別名。v編譯時計算操作數均為簡單類型常數的常數表達式。v可使用文字初始化簡單類型。 例如,“A”是 char 類型的文字,而 2001 是 int 類型的文字。 1.3 數據類型數據類型 v 初始化值類型: v 在使用 C# 中的局部變
25、量之前,必須對其進行初始化。例如,可能聲明未進行初始化的局部變量,如以下示例所示: v int myInt;v 那么在將其初始化之前,無法使用此變量。可使用下列語句將其初始化: v myInt = new int(); / Invoke default constructor for int type.v 此語句是下列語句的等效語句:v myInt = 0; / Assign an initial value, 0 in this example.v 當然,可以用同一個語句進行聲明和初始化,如下面示例所示:v int myInt = new int();v 或v int myInt = 0;v
26、 使用new運算符時,將調用特定類型的默認構造函數并對變量賦以默認值。 在上例中,默認構造函數將值 0 賦給了 myInt。1.3 數據類型數據類型 v對于用戶定義的類型,使用 new 來調用默認構造函數。 例如,下列語句調用了 Point 結構的默認構造函數: v Point p = new Point(); / Invoke default constructor for the struct.v此調用后,該結構被認為已被明確賦值;也就是說該結構的所有成員均已初始化為各自的默認值。1.3 數據類型數據類型 v1.3.2 引用類型v引用類型的變量又稱為對象,可存儲對實際數據的引用。 v包括以
27、下用于聲明引用類型的關鍵字: erface1.3 數據類型數據類型 v接口只包含方法、屬性、事件或索引器的簽名。 實現接口的類或結構必須實現接口定義中指定的接口成員。 在下面的示例,類 ImplementationClass 必須實現一個不具有參數并返回 void 的名為 SampleMethod 的方法。vinterface ISampleInterfacevv void SampleMethod();vvclass ImplementationClass : ISampleInterfacevv / Explicit interface member imple
28、mentation: v void ISampleInterface.SampleMethod()v v / Method implementation.v v static void Main()v v / Declare an interface instance.v ISampleInterface obj = new ImplementationClass();v / Call the member.v obj.SampleMethod();v v1.3 數據類型數據類型 v3.delegate(委托)v委托類型的聲明與方法簽名相似,有一個返回值和任意數目任意類型的參數: vpubli
29、c delegate void TestDelegate(string message);vpublic delegate int TestDelegate(MyType m, long num);vdelegate是一種可用于封裝命名或匿名方法的引用類型。 委托類似于 C+ 中的函數指針;但是,委托是類型安全和可靠的。 1.3 數據類型數據類型 v 內置引用類型:v 1.dynamicv 在通過 dynamic 類型實現的操作中,該類型的作用是繞過編譯時類型檢查,改為在運行時解析這些操作。dynamic 類型簡化了對 COM API(例如 Office Automation API)、動態
30、API(例如 IronPython 庫)和HTML文檔對象模型 (DOM) 的訪問。 v 在大多數情況下,dynamic 類型與 object 類型的行為是一樣的。但是,不會用編譯器對包含 dynamic 類型表達式的操作進行解析或類型檢查。 編譯器將有關該操作信息打包在一起,并且該信息以后用于計算運行時操作。在此過程中,類型 dynamic 的變量會編譯到類型 object 的變量中。因此,類型 dynamic 只在編譯時存在,在運行時則不存在。 1.3 數據類型數據類型 v 以下示例將類型為dynamic的變量與類型為object的變量對比。v class Programv v stati
31、c void Main(string args)v v dynamic dyn = 1;v object obj = 1;v / Rest the mouse pointer over dyn and obj to see theirv / types at compile time.v System.Console.WriteLine(dyn.GetType();v System.Console.WriteLine(obj.GetType();v v 1.3 數據類型數據類型 vWriteLine 語句顯示dyn和obj的運行時類型。此時,兩者具有相同的整數類型。將生成以下輸出: vSyst
32、em.Int32vSystem.Int321.3 數據類型數據類型 v2.Object vobject 類型在.NET Framework中是Object的別名。在 C# 的統一類型系統中,所有類型(預定義類型、用戶定義類型、引用類型和值類型)都是直接或間接從Object繼承的。可以將任何類型的值賦給 object 類型的變量。將值類型的變量轉換為對象的過程稱為“裝箱”。將對象類型的變量轉換為值類型的過程稱為“取消裝箱”。1.3 數據類型數據類型 v下面的示例演示了 object 類型的變量如何接受任何數據類型的值,以及 object 類型的變量如何在 .NET Framework 中使用 O
33、bject 的方法。vclass ObjectTestvv public int i = 10;vvclass MainClass2vv static void Main()v v object a;v a = 1; / an example of boxingv Console.WriteLine(a);v Console.WriteLine(a.GetType();v Console.WriteLine(a.ToString();v a = new ObjectTest();v ObjectTest classRef;v classRef = (ObjectTest)a;v Console
34、.WriteLine(classRef.i);v v1.3 數據類型數據類型 v3.Stringvstring 類型表示一個字符序列(零個或更多 Unicode 字符)。 string 是 .NET Framework 中String的別名。 1.3 數據類型數據類型 v盡管 string 是引用類型,但定義相等運算符(= 和 !=)是為了比較 string 對象(而不是引用)的值。 這使得對字符串相等性的測試更為直觀。 例如: vstring a = hello;vstring b = h;v/ Append to contents of bvb += ello;vConsole.Write
35、Line(a = b);vConsole.WriteLine(object)a = (object)b);v這將先顯示“True”,然后顯示“False”,因為字符串的內容是相同的,但是 a 和 b 引用的不是同一個字符串實例。1.3 數據類型數據類型 v+ 運算符用于連接字符串:vstring a = good + morning;v這將創建一個包含“good morning”的字符串對象。1.3 數據類型數據類型 v1.3.3 類型轉換v由于 C# 是在編譯時靜態類型化的,因此變量在聲明后就無法再次聲明,或者無法用于存儲其他類型的值,除非該類型可以轉換為變量的類型。例如,不存在從整數到任意
36、字符串的轉換。因此,將 i 聲明為整數后,就無法將字符串“Hello”賦予它,如下面的代碼中所示。 vint i;vi = Hello; / Error: Cannot implicitly convert type string to int1.3 數據類型數據類型 v但有時可能需要將值復制到其他類型的變量或方法參數中。例如,您可能有一個整數變量,您需要將該變量傳遞給參數類型化為 double 的方法。或者可能需要將類變量賦給接口類型的變量。這些類型的操作稱為“類型轉換”。在 C# 中,可以執行以下幾種類型的轉換: 隱式轉換:由于該轉換是一種安全類型的轉換,不會導致數據丟失,因此不需要任何特
37、殊的語法。例如,從較小整數類型到較大整數類型的轉換以及從派生類到基類的轉換都是這樣的轉換。 1.3 數據類型數據類型 顯式轉換(強制轉換):顯式轉換需要強制轉換運算符。在轉換中可能丟失信息時或在出于其他原因轉換可能不成功時,必須進行強制轉換。典型的例子包括從數值到精度較低或范圍較小的類型的轉換和從基類實例到派生類的轉換。 用戶定義的轉換:可以定義一些特殊的方法來執行用戶定義的轉換,從而使不具有基類派生類關系的自定義類型之間可以顯式和隱式轉換。 使用幫助程序類的轉換:若要在不兼容的類型之間進行轉換,例如在整數與 System.DateTime 對象之間轉換,或者在十六進制字符串與字節數組之間轉換
38、,則可以使用 System.BitConverter 類、System.Convert 類和內置數值類型的 Parse 方法,例如 Int32.Parse。1.4 變量和常量變量和常量 v標識符:和其他高級語言一樣,用來標識變量名、常量名、對象名、過程名等有效字符序列。 標識符命名規則:(與C語言類似) v由數字、字母、下劃線構成,只能用字母和下劃線開頭。 v不能包括空格、標點符號、運算符等其他符號。 v區分大小寫。 v不能與C#關鍵字相同。 v不能與C#的類庫名相同。1.4 變量和常量變量和常量 v表1-1 C#關鍵字abstract event new struct as explicit
39、 null switch base extern object this bool false operator throw break finally out true byte fixed override try case float params typeof catch for private uint char foreach protected ulong checked goto public unchecked class if readonly unsafe const implicit ref ushort continue in return using decimal
40、 int sbyte virtual default interface sealed volatile delegate internal short void do is sizeof while double lock stackalloc else long static enum namespace string 1.4 變量和常量變量和常量 v注意: vC#允許在變量名前加上前綴。可以使用前綴加上關鍵字作為變量的名稱。這主要是為了與其他語言交互時避免發生沖突。v可以使用中文變量名(不推薦):C#使用的是Unicode編碼。它是一個16位完整的國v際標準字符集。因為C#計劃在全球都可
41、以編寫程序,所以需要一個可以描述世界上所有語言的字符集Unicode字符集。C#支持Unicode字符集,意味著可以存儲和使用任何語言中的字母來命名變量。 1.4 變量和常量變量和常量 v例:int x; int No.1; string total; char use; char using; float Main; v變量命名常用表示法:(見名知意) v 駱駝表示法:以小寫字母開頭,以后的每個單詞都以大寫字母開頭。如vmyBook,theFox,sizeOfChar等。 v 匈牙利表示法:變量名=類型+對象描述。如iMyCar表示整型變量,cMyCar表 示字符變量。1.4 變量和常量變量
42、和常量 v1.4.1 變量的聲明和使用v變量(Variable):先聲明后使用 變量的聲明:聲明變量名和變量類型將告訴編譯器要為標量分配多少內存空間,以及變量中要存儲什么類型的值。一般格式為: v屬性修飾符 數據類型 變量名1,變量名2,變量名3,變量名n; 例:int num; byte myAge,myHeigth; long area,width,length; 1.4 變量和常量變量和常量 v 為變量賦值:變量的賦值,就是將數據保存到變量的過程。一般格式:變量名=表達式; 例:int num;num=5; 注意: v 可以在程序的任何地方定義變量,只要在使用該變量之前定義它就是合法的。
43、 如: v using System; v using System.Collections.Generic; using System.Text; v namespace ConsoleApplication1v v class Program v v static void Main() v v int a; a = 1; int b = 2; int c; c = a + b; v Console.WriteLine(c); v v v 1.4 變量和常量變量和常量 v 使用未初始化的變量: v using System; v using System.Collections.Gener
44、ic; using System.Text; v namespace ConsoleApplication1 v v class Program v v static void Main(string args) v v int a; v Console.WriteLine(0, a); v v v v 和C語言不同,C#會出現編譯錯誤:使用了未賦值的局部變量“a” 。可見,C#不允許使用未經初始化的變量。1.4 變量和常量變量和常量 v1.4.2 變量的類型v變量的類型: v在C#語言中,我們把變量分為七種類型:靜態變量(static variables)、非靜態變量(instance va
45、riables)、數組元素(Array elements)、值參數(value parameters)、引用參數(reference parameters)、輸出參數(output parameters)和 局部變量(local parameters)。 1.4 變量和常量變量和常量 v 例如: v class A v v public static int x; int y; v void F(int v, int a, ref int b, out int c) v v int i = 1; v c = a + b+; v v v X是靜態變量,y是非靜態變量,v是數組元素,a是值參,b是
46、引用參數,c是輸出參數,i是局部變量。1.4 變量和常量變量和常量 v1.4.3 變量的作用域v局部變量:在一個獨立的程序塊中,一個for語句、switch語句、或者using語句中聲明的變量,它只在該范圍中有效。當程序運行到這一范圍,變量生效,程序離開,編程失效。 1.4 變量和常量變量和常量 vusing System; vusing System.Collections.Generic; using System.Text; vnamespace ConsoleApplication1 v vclass Program v v static void Main(string args)
47、v v int x; vx = 10; vif (x = 10) v v int y = 20; v Console.WriteLine(x and y:0,1, x, y); vx = y * 2; v v y = 100; v Console.WriteLine(x is, x); v v v 1.4 變量和常量變量和常量 v1.4.4 常量的聲明和使用v常量是在編譯時已知并在程序的生存期內不發生更改的不可變值。常量使用 const 修飾符進行聲明。只有 C# 內置類型(System.Object 除外)可以聲明為 const。用戶定義的類型(包括類、結構和數組)不能為const。請使用r
48、eadonly修飾符創建在運行時初始化一次即不可再更改的類、結構或數組。 1.4 變量和常量變量和常量 vC# 不支持 const 方法、屬性或事件。 v可以使用枚舉類型為整數內置類型(例如 int、uint、long 等等)定義命名常量。v常量必須在聲明時初始化。 例如: vclass Calendar1vv public const int months = 12;v1.4 變量和常量變量和常量 v在此示例中,常量 months 始終為 12,不可更改,即使是該類自身也不能更改它。 實際上,當編譯器遇到 C# 源代碼(例如 months)中的常量修飾符時,將直接把文本值替換到它生成的中間語
49、言 (IL) 代碼中。 因為在運行時沒有與常量關聯的變量地址,所以 const 字段不能通過引用傳遞,并且不能在表達式中作為左值出現。 v可以同時聲明多個相同類型的常量,例如: vclass Calendar2vv const int months = 12, weeks = 52, days = 365;v1.5 運算符的應用運算符的應用 v1.5.1 算數運算符v算術運算符用于完成算術運算,所涉及的操作對象有文本、常量、變量、表達式、函數調用以及屬性調用等。例如,運算符“*”用于將其兩邊的操作數的值相乘。Visual C# 2010的常用算術運算符及其使用方法可參見表1-21.5 運算符的
50、應用運算符的應用 v表1-2 C#的算術運算符運算符類別示例表達式結果+二元var1 = var2 + var3;/x=y+zvar1的值是var2與var3的和/y=3,z=2,則x=5二元var1 = var2var3;/x=y-zvar1的值是從var2減去var3所得的值/ y=3,z=2,則x=-1*二元var1 = var2 * var3;/x=y*zvar1的值是var2與var3的乘積/ y=3,z=2,則x=6/二元var1 = var2 / var3;/x=y/zvar1是var2除以var3所得的值/ y=3,z=2,則x=1%二元var1 = var2 % var3;/
51、x=y%zvar1是var2除以var3所得的余數/ y=3,z=2,則x=1一元var1 =var2;/x=-yvar1的值等于var2的值除乘以1/ y=3,則x=-31.5 運算符的應用運算符的應用 v對算術運算符說明如下: (1)“%”為求余運算符,求兩個數相除后的余數。 (2)進行除法運算時,如果兩個操作數均為整數,則得到的結果也是整數,并不采用四舍五入規則,而是直接舍棄其小數部分,例如,“10 / 4”的結果為“2”、“15 / 4”的結果為“3”。 (3)算術運算符的優先級順序由高到低依次為:-(取負)、*、/、%、+、-(減)。 C#還有兩種特殊的算術運算符:+(自增運算符)和
52、-(自減運算符),其作用是使變量的值自動增加1或者減少1。因此x=x+1和x+一樣的;x=x-1和x-是一樣的。1.5 運算符的應用運算符的應用 v 自增和自減運算符既可以在操作數前面(前綴),也可以在操作數后在(后綴)。v 例如: x=16; y=+x; x=16; y=x+;v 最終x的值都是17。v 但在這種前綴表示法的情況下,y被賦值為17;而在后綴表示法中,y被賦值為16。v 也就是說前綴表示法與后綴表示法有很大的區別,如果帶有自增(自減)運算符(+/-)的變量出現在表達式中,前綴表示法的執行過程是:先使變量的值加(減去)1,再執行其他運算;而后綴表示法則是先執行其他運算,再使變量的
53、值加(減去)1。 1.5 運算符的應用運算符的應用 vVisual C# 2010的常用算術運算符的學習可參考下列代碼。vusing System;vusing System.Collections.Generic;vusing System.Linq;vusing System.Text;vnamespace 算術運算vv class Programv v static void Main(string args)v v int num1, num2, int_add, int_div, int_mod;v double double_div, double_mod;v int front_
54、add_self, back_add_self;v num1 = 7;v num2 = 2;v int_add = num1 + num2; /“=”為賦值運算符,將其左邊的運算結果賦v/給右邊的變量v int_div = num1 / num2;v int_mod = num1 % num2;1.5 運算符的應用運算符的應用 v double_div = (double)num1 / num2;/(double)的作用是強制類型轉換,即將num1v /轉換為double類型v double_mod = (double)num1 % num2;v front_add_self = +num1;
55、v back_add_self = num1+;v Console.WriteLine(*);v Console.WriteLine(7 + 2= 0,int_add);/Console.WriteLine的輸出格式,v/0,用來調用“,”后面的參數v Console.WriteLine(7 / 2= 0, int_div);v Console.WriteLine(7 % 2= 0, int_mod);v Console.WriteLine(7.0 / 2= 0, double_div);v Console.WriteLine(7.0 % 2= 0, double_mod);v Console
56、.WriteLine(*);v Console.WriteLine(7+ = 0, front_add_self);v Console.WriteLine(+7 = 0, back_add_self);v Console.WriteLine(*);v v v1.5 運算符的應用運算符的應用 v實例的運算結果:v*v7 + 2= 9v7 / 2= 3v7 % 2=1;v7.0 / 2= 3.5v7.0 % 2=1;v*v7+ = 8v+7 = 8v*1.5 運算符的應用運算符的應用 v注意:當“+”運算符兩邊的操作數是字符串時,其不再是算術運算符,而叫做字符串連接運算符,用于連接兩個字符串。字符
57、串連接表達式的結果仍為字符串類型的數據。v例如:Visual + C# + 2010/ 結果為Visual C# 20101.5 運算符的應用運算符的應用 v1.5.2 關系運算符v關系運算符用于比較兩個表達式之間的關系,比較的對象通常有數值、字符串和對象等,關系運算的結果是一個bool值,即true或false。v例如:v bool a=a大于布爾型。如果條件成立,結果為true,否則結果為false 236,x2,ba小于3.143,x=大于等于3.26=b=小于等于PIj)&邏輯與2xy&x0|邏輯或2xy|x01.5 運算符的應用運算符的應用 v1.5.4 賦值運算符v
58、賦值運算符用于將一個數據賦予一個變量,賦值操作符的左操作數必須是一個變量,賦值結果是將一個新的數值存放在變量所指示的內存空間中, Visual C# 2010的賦值運算符有基本賦值運算符和復合賦值運算符兩種,具體用法見表1-5。 1.5 運算符的應用運算符的應用 v表1-5 C#的賦值運算符類 型符 號說 明簡單賦值運算符=x=1復合賦值運算符+=x+=1等價于x=x+1-=x-=1等價于x=x-1*=1x*=1等價于x=x*1/=x/=1等價于x=x/1%=x%=1等價于x=x%11.5 運算符的應用運算符的應用 v1.5.5 運算符的優先級v當一個表達式包含多種操作符時,操作符的優先級控制
59、著操作符求值的順序。例如,表達式x+y*z按照x+(y*z)順序求值,因為*操作符比+操作符有更高的優先級。這和數學運算中的先乘除后加減是一致的。v根據運算符所執行運算的特點和它們的優先級,可將它們劃分為14個等級,如表1-6所示(從第1級到第14級,優先級逐步降低)。1.5 運算符的應用運算符的應用 v表1-6 運算符的優先級級 別運 算 符1+、-(作為前綴)、()、+、- (取負)、!、2*、/、%、3+、-45、=、=、!=6&79|10&11|12? :13=、*=、/=、%=、+=、-=、=、&=、=、|=14+、-(作為后綴)1.5 運算符的應用運算符的應
60、用 v1.5.6 運算符的結合順序v運算符的結合順序分為左結合和右結合兩種,在Visual C# 2010中,所有的一元運算符(+、-作為后綴時除外)都是右結合的。而對于二元運算符,除了賦值運算符外,其他的都是左結合的。例如x+y-z,操作符按照出現的順序由左至右執行,x+y-z按(x+y)-z進行求值。賦值操作符按照右接合的原則,即操作按照從右向左的順序執行。如x=y=z按照x=(y=z)進行求值。v建議在寫表達式的時候,如果無法確定操作符的實際順序,則盡量采用括號來保證運算的順序,這樣也使得程序一目了然,而且自己在編程時能夠思路清晰。1.6 C#語句結構語句結構 v 1.6.1 分支選擇結構v if 語句根據 Boolean 表達式的值選擇要執行的語句。下面的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物必修一知識梳理
- 委托代供貨合同范本
- 漯河職業技術學院《煤炭企業價值創造》2023-2024學年第二學期期末試卷
- 武漢工貿職業學院《數字資源檢索與應用》2023-2024學年第一學期期末試卷
- 重慶電信職業學院《數字漫畫》2023-2024學年第一學期期末試卷
- 寧德師范學院《AR拓展案例技巧》2023-2024學年第二學期期末試卷
- 平涼職業技術學院《形式與政策》2023-2024學年第二學期期末試卷
- 新疆機電職業技術學院《醫用高分子材料》2023-2024學年第一學期期末試卷
- 武漢工貿職業學院《流體輸配管網》2023-2024學年第二學期期末試卷
- 山西工程職業學院《汽車專業外語》2023-2024學年第二學期期末試卷
- DPtechIPS2000系列入侵防御系統培訓膠片課件
- 競爭性談判二次報價單
- 危大工程巡視檢查記錄
- (房屋建筑部分)工程建設標準強制性條文2023年版
- 空氣自動監測站運維技術服務合同模版
- (完整)康復醫學考試題(含答案)
- 延期還款申請表
- 江蘇省地圖矢量PPT模板(可編輯)
- DB44∕T 1702.2-2015 屋面并網光伏發電系統 第2部分:施工與驗收規范
- 高等教育心理學專業知識考試題庫與答案
- 植物生理學 水分代謝
評論
0/150
提交評論