chap02 C#語言基礎知識

來源:互聯網
上載者:User

環境

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


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.