C#高級編程第2章-核心C#


內容提要:

聲明變量;變量的初始化和作用域;C#的預定義數據類型;在C#程序中使用條件語句、循環和跳轉語句指定執行流;枚舉;名稱空間;

Main()方法;基本命令行C#編譯器選項;使用System.Console執行控制台I/O;使用內部注釋和文檔編制功能;預處理指令;C#編程的推薦規則和約定。

一、第一個C#程序

Q:如何利用c#命令行編譯器(csc.exe)編譯一個程序?

A: css ClassName.cs  (Tool :Visual studio 2010 Command Prompt)

Q:C# 區分大小寫的嗎?

A:C#區分大小寫的。提示:對於控制台應用程序、Windows應用程序都有一個入口點——Main()方法(M一定是大寫的)

二、變量

Q:C# 定義變量的語法?

A: DataType Identifier;

Q: C# 聲明變量的例子

A:

提示:變量的初始化是C#強調安全性的一個例子。

Q:C#如何確保變量使用前進行初始化?

A:方法一:變量是類或結構中的字段,如果沒有顯式初始化,創建這些變量時,其默認值就是0;方法二:方法的局部變量必須在代碼中顯式初始化,之后才能在語句中使用它們的值。

Q:類型推斷

A:類型推斷(type reference)使用var 關鍵字。編譯時進行,因為運行時都是類型安全的代碼。

Q:類型推斷的規則

A:(1)變量必須初始化。否則,編譯器就沒有推斷變量類型的依據。(2)初始化器({})不能為空。(3)初始化器必須放在表達式中。(4)不能把初始化器設置為一個對象,除非在初始化器中創建了一個新對象。

Q:確定變量作用域的規則?

A: (1)只要類在某個作用域內,其字段(成員變量)也在某個作用域內。(2)局部變量存在於表示聲明該變量的塊語句或方法結束的右括號之前的作用域內。

(3)在for、while或類似語句中聲明的局部變量存在於該循環體內。

Q:字段和局部變量的作用域沖突

A:某些情況下,可以區分名稱相同(完全限定的名稱不同)、作用域相同的兩個標識符。編譯器只允許聲明第2個變量。原因是C#在變量之間有一個基本區分,它把類級別聲明的變量看作字段,而把在方法中聲明的變量看作局部變量。例如:

Q: 什么是常量?

A:常量是其值在使用過程中不會發生變化的變量。 語法: 在變量之前加const關鍵字。

Q: 常量的特點?

A:(1)常量必須在聲明時初始化。指定以后就不能再改變了。(2)常量的值必須能在編譯時用於計算。(3)常量總是靜態的。不允許在常量中聲明static。

Q: 在程序中使用常量的好處?

A:(1)由於使用易於讀取的名稱替代了教難讀懂的數字或者字符串,常量使程序變得更易於閱讀。(2)常量使程序更易於修改。(3)常量更容易避免程序出錯

三、預定義數據類型

Q: C#預定義類型

A:C#有15種預定義類型,13個是值類型(8個整型(sbyte,short,int,long,byte,ushort,uint,ulong),2個浮點型(float,double),1個decimal類型,1個char類型,1個bool類型),兩個是引用類型(string和Object)。

Q: 預定義的整型類型?

A:sbyte(8位有符號整數);short(16位有符號整數);int(32位有符號整數);long(64位有符號整數);byte(8位無符號整數);ushort(16位無符號整數);uint(32位無符號整數);ulong(64位無符號整數);

提示:decimal類型不是基本類型,所以計算時會有性能損失。

Q:使用Object類型可以解決的兩個問題:

A:(1)可以使用Object引用綁定任何子類型的對象。(2)Object類型執行許多一般用途的基本方法,包括Equals()、GetHashCode()、GetType()和ToString()。

四、流控制

Q:條件語句?

A:if...else;switch...case

提示:對於switch...case中如果有一條case語句為空,就可以從這個case跳到下一個case上。特別注意任何兩個case語句的值不能相同。

Q:循環語句?

A:for;foreach;while;do....while;

Q:跳轉語句?

A:goto;break;continue;return;

五、枚舉

Q: 什么是枚舉?

A:枚舉是用戶自定義的整數類型。在聲明一個枚舉時,要指定該枚舉的實例可以包含的一組可接受的值。

Q:使用枚舉的優勢?

A: (1)枚舉可以使代碼更易於維護,有助於確保給變量指定合法的、期望的值。(2)枚舉是代碼更清晰,允許用描述性的名稱表示整數值。(3)枚舉也使代碼更易於鍵入。

六、名稱空間

Q:名稱空間?

A:名稱空間提供了一種組織相關類和其他類型的方式。與文件或組件不同,名稱空間是一種邏輯組合,而不是物理組合。

提示:注意不允許在另一個嵌套的名稱空間中聲明多部分的名稱空間。

Q:using關鍵字的特別用處?

A:using關鍵字的另一個用途就是給類和名稱空間指定別名。語法:using alias = NamespaceName;

七、Main方法

 Main方法必須是類或結構的靜態方法,並且其返回類型必須是int或void。

Q:如何處理多個Main方法?

A:對於控制台或Windows應用程序,如果有多個Main方法編譯器就會返回編譯錯誤。對於一個類中有多個Main方法可以在編譯時指定Main方法的方式來告訴編譯器那個Main方法作為程序的入口點。csc ClassName.cs /main: Namespace

Q: 給Main方法傳遞的參數

A:例如 ArgsExample編譯后,可以這樣的傳遞參數:ArgsExample /a /b /c。接受到的一個string數組時由/a /b /c組成。

八、編譯C#文件的相關指令

Q: 如何指定編譯為控制台應用程序、帶清單的類庫、沒有清單的組件和Windows應用程序?

A:默認情況下編譯為控制台應用程序,也可以用(/t:exe)指定;帶清單的類庫(/t:library);沒有清單的組件(/t:module);Windows應用程序(/t:winexe

Q:如何指定編譯生成的輸出文件名?

A:使用選項(/out);注意/out和/t選項必須在編譯文件的文件名前面。

九、控制台I/O

Q:預定義類型的主要格式字符串

A:

 使用注釋和使用預處理指令,參考MSDN。C#編程規則,可以參考<<.NET設計規范:約定、慣用法與模式>>

小結

本章主要介紹一些C#的基本語法,和編寫C#應用程序需要掌握的內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM