創建只讀屬性,可以只有getter方法而沒有setter方法即可。
代表主要有兩個用途,一個是回調,另一個是事件處理。對于回調,代表就像是用typedef定義了一個指向函數的指針。代表需要用new來產生,代表也可以在形式上類似于類那樣,來定義個該代表的對象,也可以作為對象作為函數參數進行傳遞。
nested loop的意思是嵌套循環,經常看到nested這個詞,但一直不知道啥意思,現在總算知道了。
線程部分:
在System.Threading名空間中定義;
創建線程不必要利用到一個ThreadStart的代表,該代表來指定一個方法,這一方法就是線程執行的函數體;
啟動線程用Start;
休眠線程用Sleep;
在.NET中,線程可以超越進程的界限,訪問其他進程中的線程;
線程掛起有Sleep(0)和Suspend兩種方法,第一種方法直到其他線程調用該線程的Interrupt來中斷這種掛起狀態,第二種方法會直到其他線程調用該線程的Resume才能恢復掛起的狀態;
銷毀線程用Abort。
一個典型例子:
class A
{
public static void fun()
{
Console.WriteLine("Another Thread is running!");
}
public static void main()
{
ThreadStart t=new ThreadStart(fun);
Console.WriteLine("Main Thread is running!");
Thread thread=new Thread(t);
thread.Start();
Console.WriteLine("...");
}
}
.NET中用Monitor類實現了類似于信號量的機制來對代碼塊進行串行化的訪問。
Monitor.Enter(this);
代碼塊
Monitor.Exit(this);
C#中用lock實現了類似Monitor的功能,使用方法如下:
lock(this)
{
代碼塊
}
可以通過Mutex來實現同步,使用方法如下:
在類中定義一個成員變量:Mutex mutex=new Mutex(false);//這里用false表示此刻還不希望鎖定。
在使用時,可以這樣:
mutex.WaitOne();
代碼塊
mutex.Close();