■■■ 選擇陳述式 if、else、switch、case default
■■■ 反覆運算陳述式 do、for、foreach、in、while
■■■ 跳躍陳述式 break、continue、default、goto、return、yield
■■■ 例外處理陳述式 throw、try-catch、try-finally、try-catch-finally
■■■ Checked 和 Unchecked checked、unchecked
■■■ fixed 陳述式 固定 ■■■ lock 陳述式 鎖定
■■■ Environment.Exit(Environment.ExitCode) : 不等待相關訊息的結束,強制退出應用程式。 (另有 Application.Exit ; Application.ExitThread )
■■■ Environment.NewLine (同 vbNewLine) : 換行。
if (Char.IsUpper(c)) { Console.WriteLine("Character is uppercase.");} else if (Char.IsLower(c)){Console.WriteLine("Character is lowercase.");} else if (Char.IsDigit(c)){Console.WriteLine("Character is a number."); } else{Console.WriteLine("Character is not alphanumeric.");}
switch (caseSwitch){ // mStr case 1:Console.WriteLine("Case 1"); break; // "1" case 2:Console.WriteLine("Case 2"); break; // "2" default:Console.WriteLine("Default case"); break; }
■ do-while,for,foreach 區塊中的任一位置使用 break 陳述式中斷此迴圈。可以使用 continue 陳述式直接跳至 while 運算式評估陳述式。也可以由 goto、return 或 throw 陳述式結束。
do{Console.WriteLine(x); x++; } while (x < 5);
for (int i = 1; i <= 5; i++) { Console.WriteLine(i); }
int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 }; foreach (int i in fibarray) { System.Console.WriteLine(i); }
while (n < 6) { Console.WriteLine("Current value of n is {0}", n); n++; }
■■■ Try-Catch這東西,只要是寫在Try與Catch裡面的程式發生錯誤,就會跳到Catch的地方,最後 有無錯誤 一定會執行finally區段(如果有寫的話).
throw try-catch try-finally try-catch-finally
try{string s = null;ProcessString(s);}
catch (ArgumentNullException e){ // Most specific:
Console.WriteLine("{0} First exception caught.", e); } catch (Exception e){ // Least specific: Console.WriteLine("{0} Second exception caught.", e); }■■■ this 關鍵字所指的是類別 (Class) 的目前執行個體 (Instance),而且也用來當做擴充方法之第一個參數的修飾詞 (Modifier)。
■■■ base 關鍵字用於存取衍生類別中的基底類別 (Base Class) 成員
■■■ Windows Form : Close Hide Focus Show() ShowDialog()
■■■ Me in C# is this , and MyBase in C# is base
===
■■■ 應用程式組態檔,於asp.net是web.config,WindowsForm是App.config(執行檔名稱.exe.config)。組態檔對程式本身就是基礎和依據,是個xml檔,提供了System.Web.Configuration 與 System.Configuration 兩個命名空間,要使用它,需加入參考。.net提供可直接訪問
string ConString=System.Configuration.ConfigurationSettings.AppSettings["ConnenctionString"];
■■■ Main 方法為 .exe 程式的進入點,是程式控制的開始及結束位置。
■ Main 在類別或結構內宣告。 Main 必須是靜態方法,而且不能是 public (在前面範例中,它會接收預設的 private 存取)。封入類別或結構不一定要是靜態的。
class TestClass{ static void Main(string[] args){ // Display the number of command line arguments: System.Console.WriteLine(args.Length); } }
■ Main 可以有 void 或 int 傳回型別。
■ 宣告 Main 方法時,可以選擇是否搭配包含命令列引數的 string[] 參數。 在使用 Visual Studio 建立 Windows Form 應用程式時,您可以手動加入參數,或者以 Environment 類別來取得命令列引數。 參數會讀取為以零為基底索引的命令列引數。與 C 和 C++ 不同的是,程式名稱不做為第一個命令列引數處理
■■■ 我在第2個和第3個窗體的FormClosing事件那裡設了application.exit()之後,方便完全退出程序。但是很奇怪的是,我在非主窗體內寫 this.Close()之後,全部窗體都關了,程序也退出了。如果不在FormClosing那裡設置Application.Exit()就不會這樣。
■ 因為有this.Close()所以都會執行窗體的FormClosing事件, 而你窗體的FormClosing事件中有application.exit()所以全部窗體都關了,程序也退出了,建議你子窗體退出時直接this.Close(),而application.exit()加在主窗體裡就行了
■■■ HOW TO:將字串轉換為整數 ::: ToInt32(String) 方法,將輸入由 string 轉換為 int。
■■■ 字串是型別 String 的物件,其值為文字。 在內部,文字會儲存為 Char 物件的循序唯讀集合。 C# 字串尾端沒有 null 結尾字元,因此 C# 字串可以包含任何數目的內嵌 null 字元 ('\0')。 字串的 Length 屬性代表字串中包含的 Char 物件數,而不是 Unicode 字元數。 若要存取字串中個別的 Unicode 字碼指標,請使用 StringInfo 物件。
■■■ 宣告和初始化字串 :
string message1;// Declare without initializing. string message2 = null;// Initialize to null. // Initialize as an empty string.// Use the Empty constant instead of the literal "". string message3 = System.String.Empty; //Initialize with a regular string literal. string oldPath = "c:\\Program Files\\Microsoft Visual Studio 8.0"; // Initialize with a verbatim string literal. string newPath = @"c:\Program Files\Microsoft Visual Studio 9.0"; System.String greeting = "Hello World!";// Use System.String if you prefer. // In local variables (i.e. within a method body)// you can use implicit typing. var temp = "I'm still a strongly-typed System.String!"; // Use a const string to prevent 'message4' from// being used to store another string value. const string message4 = "You can't get rid of me!"; // Use the String constructor only when creating // a string from a char*, char[], or sbyte*. See System.String documentation for details. char[] letters = { 'A', 'B', 'C' }; string alphabet = new string(letters);除了使用字元陣列初始化字串之外,其他情況下並不是使用 new 運算子來建立字串物件。使用 Empty 常數值初始化字串,可以建立字串長度為零的新 String 物件。 零長度字串的字串常值 (String Literal) 表示為 ""。 藉由使用 Empty 值而非 null 來初始化字串,可以降低發生 NullReferenceException 的機會。 請在嘗試存取字串值前,先使用 IsNullOrEmpty(String) 方法驗證該值。
■■■ 數字型別及日期和時間型別的 ToString 方法都含有多載,而其中只有某些多載會包含 IFormatProvider 參數。 如果方法沒有 IFormatProvider 型別的參數,則會改以傳遞 CultureInfo.CurrentCulture 屬性所傳回的物件。
.NET Framework 提供三個實作 IFormatProvider 的類別:
-
DateTimeFormatInfo,這個類別提供特定文化特性之日期和時間值的格式設定資訊。 它的 IFormatProvider.GetFormat 實作會傳回它自己的執行個體。
-
NumberFormatInfo,這個類別提供特定文化特性的數值格式設定資訊。 它的 IFormatProvider.GetFormat 實作會傳回它自己的執行個體。
-
CultureInfo. 它的 IFormatProvider.GetFormat 實作可以傳回 NumberFormatInfo 物件來提供數值格式設定資訊,或傳回 DateTimeFormatInfo 物件來提供日期和時間值的格式設定資訊。
■■■
標題 | 定義 |
---|---|
標準數值格式字串 | 說明建立數值常用之字串表示的標準格式字串。 |
自訂數值格式字串 | 說明建立應用程式專屬數值格式的自訂格式字串。 |
標準日期和時間格式字串 | 說明建立 DateTime 值之常用字串表示的標準格式字串。 |
自訂日期和時間格式字串 | 說明建立應用程式專屬 DateTime 值格式的自訂格式字串。 |
標準 TimeSpan 格式字串 | 說明建立時間間隔之常用字串表示的標準格式字串。 |
自訂 TimeSpan 格式字串 | 說明建立應用程式專屬數值格式的自訂格式字串。 |
列舉型別格式字串 | 說明用來建立列舉值之字串表示的標準格式字串。 |
複合格式 | 描述如何將一個或更多的格式化值嵌入字串。 字串可以隨後顯示在主控台 (Console) 或寫入資料流。 |
執行格式化作業 | 列出各主題,提供執行特定格式設定作業的逐步指示。 |
剖析字串 | 說明如何將物件初始化為這些物件的字串表示所描述的值。 剖析是格式化的反向作業。 |
System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet"); sb[0] = 'C';for (int i = 0; i < 10; i++) { sb.Append(i.ToString()); }
■■■
HOW TO:修改字串內容
HOW TO:串連多個字串 用 + 運算子和 Stringbuilder 類別,於編譯和執行階段聯結字串。
HOW TO:比較字串 如何執行字串的序數比較。
HOW TO:分割字串 包含使用 String.Split 方法剖析字串的程式碼範例。
HOW TO:使用字串方法搜尋字串 使用特定方法搜尋字串。
HOW TO:使用規則運算式搜尋字串 使用規則運算式搜尋字串。
HOW TO:判斷字串是否表示數值 安全剖析字串,判斷字串是否包含有效的數值。
HOW TO:將 String 轉換為 DateTime 將字串 (例如 "01/24/2008") 轉換為 System.DateTime 物件。
基本字串作業 提供主題連結,這些主題會使用 System.String 和 System.Text.StringBuilder 方法來執行基本字串作業。
剖析字串 描述如何將字元或空格插入字串中。
比較字串 包含如何比較字串的詳細資訊
使用 StringBuilder 類別 描述使用 StringBuilder 類別建立和修改動態字串物件。
LINQ 和字串 使用 LINQ 查詢執行各種字串作業的詳細資訊。
■■■ 在 C# 中,所有記憶體內的字串編碼都是 Unicode (UTF-16)。 當您將資料從儲存區帶入 string 物件時,資料會自動轉換成 UTF-16。 如果資料只包含 0 到 127 的 ASCII 值,您就不需要額外進行轉換。 不過,如果原始程式文字包含延伸 ASCII 位元組值 (128 到 255),則預設會按照目前的字碼頁 (Code Page) 來解譯擴充字元。 若要指定按照不同字碼頁來解譯原始程式文字,請使用 System.Text.Encoding 類別 (Class)示。
■■■ 陣列是以類別宣告的:type[] arrayName;
■■■ 存取範圍 : 有些方法和屬性適用於從類別或結構外部的程式碼進行呼叫或存取,此稱為「用戶端程式碼」(Client Code)。 其他方法和屬性則可能僅適用於類別或結構本身。 所以,請務必限制您的程式碼的存取範圍,只開放給計劃中的用戶端程式碼。 請使用存取修飾詞 (Modifier) public、protected、internal、protected internal 和 private,為型別及其成員指定用戶端程式碼對它們的存取程度。 預設存取範圍為 private。 如需詳細資訊,請參閱存取修飾詞 。■■■ 陣列是以類別宣告的:type[] arrayName;
string[] stringArray = new string[6];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
int[] array1 = new int[5];// Declare a single-dimensional array int[] array2 = new int[] { 1, 3, 5, 7, 9 };// Declare and set array element values int[] array3 = { 1, 2, 3, 4, 5, 6 };// Alternative syntaxy int[,] multiDimensionalArray1 = new int[2, 3];// Declare a two dimensional arra int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };// Declare and set array element values int[][] jaggedArray = new int[6][];// Declare a jagged array jaggedArray[0] = new int[4] { 1, 2, 3, 4 };// Set the values of the first array in the jagged array structure
===
array5[2, 1] = 25; int elementValue = array5[2, 1];
■■■ 陣列有下列屬性: ■ 陣列可以是一維、多維或不規則。■ 數值陣列元素的預設值會設定為零,而參考元素則設定為 null。
■ 不規則陣列是指包含陣列的陣列,因此其元素為參考型別,而且會初始化為 null。
■ 陣列是以零為起始索引,即包含 n 個元素的陣列建立索引時,會從 0 開始,一直到 n-1 為止。
■ 陣列元素可以是任何型別,包括陣列型別。
■ 陣列型別是從抽象基底型別 Array 衍生的參考型別。 由於此型別會實作IEnumerable 和 IEnumerable<T>,您可以在 C# 中的所有陣列上使用 foreach 反覆運算。
■■■ 一般而言,類別是針對更複雜的行為或在類別物件建立後計劃用於修改的資料,用來塑造它們的模型。 結構 (Struct) 則最適合小型資料結構 (Structure),其中包含的主要資料在結構 (Struct) 建立後並不計劃加以修改。詳細資訊,請參閱類別 、物件和結構。
■■■ 所有方法、欄位、常數、屬性和事件都必須在型別中加以宣告,它們稱為類別或結構的「成員」(Member)。 C# 中沒有全域變數或方法,而在其他語言中則有。 就算是程式的進入點 Main 方法,也必須在類別或結構中加以宣告。 下列清單包含可在類別或結構中宣告的所有不同類型成員。
■■■ static 修飾詞 (Modifier) 可用來宣告靜態成員,此成員屬於型別本身,並不隸屬任何一個物件。 static 修飾詞可以用於類別、欄位、方法、屬性、運算子、事件及建構函式 (Constructor),但是不能用於索引子 (Indexer)、解構函式 (Destructor) 或類別以外的型別。 如需詳細資訊,請參閱靜態類別和靜態類別成員。
■■■ const 關鍵字是用來修改欄位或區域變數的宣告。 它所指定之欄位或區域變數的值是常數,也就是無法修改。const int x = 0;
public const double gravitationalConstant = 6.673e-11; private const string productName = "Visual C#";
■■■ C# 程式設計大量使用命名空間(NameSpace)的原因有兩個。 第一,.NET Framework 會使用命名空間組織其多種類別,如: System.Console.WriteLine("Hello World!"); System 是命名空間,而 Console 是該命名空間中的類別。 可以使用 using (指示詞) 關鍵字,因此就不需要完整名稱,如: using System; Console.WriteLine("Hello");
使用命名空間 (C# 程式設計手冊)
HOW TO:使用全域命名空間別名 (C# 程式設計手冊)
HOW TO:使用 My 命名空間 (C# 程式設計手冊)
命名空間關鍵字 (C# 參考)
:: 運算子 (C# 參考)
. 運算子 (C# 參考)
■■■
==========================================================
■■■ ■
==========================================================
■■■ C# 程式設計手冊
本章節假設您已對 C# 和一般程式設計概念有所了解。 如果對於程式設計或者 C# 而言,您是完全的新手,建議您造訪 C# 開發人員中心,其中提供許多教學課程、範例和影片,可協助您開始使用。
如需特定關鍵字、運算子和前置處理器指示詞的詳細資訊,請參閱 C# 參考。 如需 C# 語言規格的詳細資訊,請參閱 C# 語言規格。
■■■ 平台區段
==========================================================
a
a
■■■
0 意見:
張貼留言