環境
visual studio 2010
.net framework 4.0
1. 編譯 & 反組譯碼
1.1 編譯 csc.exe /out:c:\test.exe c:\test.cs
1.2 反組譯碼 用IL反組譯碼工具,開啟 test.exe 然後儲存。
2. 數組
int[,] points = new int[3,2]{{1, 2}, {2, 3}, {3, 4}};
如果不賦值預設值應該是0(書上說是null)。
3. 類型轉換
int a = int.Parse("3");
int b = (int)3.14;
int c = System.Convert.ToInt32(3.14);
float d = System.Convert.ToSingle("3.14");
string e = 3.14.ToString();
Console.WriteLine("a = {0}, b = {1}, c = {2}, d = {3}, e = {4}", a,b,c,d,e);
output:a = 3, b = 3, c = 3, d = 3.14, e = 3.14
4. 注釋方式
4.1 //, ///
4.2 /* */
4.3
#region introdoction
...
#endregion
5. 關鍵字解析(部分)
5.1 foreach語句
foreach語句用於遍曆集合中所有的元素,但這需要特定的介面支援
int[] array = new int[]{1,2,3};
foreach(int item in array)
Console.WriteLine(item);
5.2 lock語句
lock 關鍵字將語句塊標記為臨界區,方法是擷取給定對象的互斥鎖,執行語句,然後釋放該鎖。
5.3 checked & unchecked
關鍵字用於取消整型算術運算和轉換的溢出檢查。
const int ConstantMax = int.MaxValue;
int1 = unchecked(ConstantMax + 10); // 不會報錯
5.4 using
using ( StreamWriter sw = File.CreateText('test.txt'))
{
sw.WriteLine("Line 1");
sw.WriteLine("Line 2");
}
5.5 yield
static IEnumerable Range(int from, int to)
{
for(int i = from; i < to; i++)
yield return i;
}
static void Main()
{
foreach(int item in Range(-5, 5)
Console.Write(item + ",");
}
5.6 unsafe和fixed
static int x = 2;
unsafe static void F(int *p)
{ *p = 1; }
static void Main()
{
unsafe
{
fixed (int *p = &x) F(p);
Console.WriteLine(x);
}
}
指標指向的記憶體一定要固定。凡是C#裡的參考型別(一切類型的數組都是參考型別)都是分配在託管堆上的,都不固定。有兩種方法強制固定,一種是用stackalloc分配在棧上,另一種是用fixed分配在堆上。
5.7 typeof
用於擷取類型的 System.Type 對象。 typeof 運算式採用以下形式:
System.Type type = typeof(int);
若要擷取運算式的運行時類型,可以使用 .NET Framework 方法 GetType,如以下樣本中所示:
int i = 0;
System.Type type = i.GetType();
5.8 Lambda 運算式
delegate int del(int i, int j);
static void Main(string[] args)
{
del myDelegate = (x, y) => x * y;
int j = myDelegate(5, 20);
Console.WriteLine(j);
}
5.9 as 和 is
x is T |
如果 x 為 T,則返回 True;否則返回 False。 |
x as T |
傳回型別為 T 的 x,如果 x 不是 T,則返回 null |
5.10 ??
null 合并 |
x ?? y |
如果 x 為 Null 則計算結果為 y,否則計算結果為 x |
5.11 new
作為操作符的new用於在堆上建立對象和調用建構函式,值得注意的是實值型別對象(例如結構)是在棧上建立的,而參考型別對象(例如類)是在堆上建立的。
6 異常檢查
throw, try-catch, try-finally, try-catch-finally