創(chuàng)建只讀屬性,可以只有g(shù)etter方法而沒(méi)有setter方法即可。
代表主要有兩個(gè)用途,一個(gè)是回調(diào),另一個(gè)是事件處理。對(duì)于回調(diào),代表就像是用typedef定義了一個(gè)指向函數(shù)的指針。代表需要用new來(lái)產(chǎn)生,代表也可以在形式上類似于類那樣,來(lái)定義個(gè)該代表的對(duì)象,也可以作為對(duì)象作為函數(shù)參數(shù)進(jìn)行傳遞。
nested loop的意思是嵌套循環(huán),經(jīng)??吹絥ested這個(gè)詞,但一直不知道啥意思,現(xiàn)在總算知道了。
線程部分:
在System.Threading名空間中定義;
創(chuàng)建線程不必要利用到一個(gè)ThreadStart的代表,該代表來(lái)指定一個(gè)方法,這一方法就是線程執(zhí)行的函數(shù)體;
啟動(dòng)線程用Start;
休眠線程用Sleep;
在.NET中,線程可以超越進(jìn)程的界限,訪問(wèn)其他進(jìn)程中的線程;
線程掛起有Sleep(0)和Suspend兩種方法,第一種方法直到其他線程調(diào)用該線程的Interrupt來(lái)中斷這種掛起狀態(tài),第二種方法會(huì)直到其他線程調(diào)用該線程的Resume才能恢復(fù)掛起的狀態(tài);
銷毀線程用Abort。
一個(gè)典型例子:
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類實(shí)現(xiàn)了類似于信號(hào)量的機(jī)制來(lái)對(duì)代碼塊進(jìn)行串行化的訪問(wèn)。
Monitor.Enter(this);
代碼塊
Monitor.Exit(this);
C#中用lock實(shí)現(xiàn)了類似Monitor的功能,使用方法如下:
lock(this)
{
代碼塊
}
可以通過(guò)Mutex來(lái)實(shí)現(xiàn)同步,使用方法如下:
在類中定義一個(gè)成員變量:Mutex mutex=new Mutex(false);//這里用false表示此刻還不希望鎖定。
在使用時(shí),可以這樣:
mutex.WaitOne();
代碼塊
mutex.Close();