第五章
代理實現的是象c++等語言的指針功能
寫一個代理包括三個步驟
寫代理
代理的聲明使用以下語法
delegate void SimpleDelegate();
實例化一個代理
class Test
{
static void F() {
System
}
static void Main() {
SimpleDelegate d = new SimpleDelegate(F);//將方法壓入
d();//通過代理
F();//不通過代理
}
}
最後讓我們調用她
void MultiCall(SimpleDelegate d
for (int i =
d();
}
}
我們可以看到對於方法的調用是通過代理來完成的
下面就代理的強大功能進行詳細介紹
namespace DelegatesCS
{
using System;
public class Wisdom //包含代理的類
{
public delegate string GiveAdvice();
public string OfferAdvice(GiveAdvice Words)
{
return Words();
}
}
public class Parent //基類
{
public virtual string Advice()
{
return(
}
~Parent() {}
}
public class Dad: Parent //子類
{
public Dad() {}
public override string Advice()
{
return(
}
~Dad() {}
}
public class Mom: Parent //子類
{
public Mom() {}
public override string Advice()
{
return(
}
~Mom() {}
}
public class Daughter //不繼承與基類的類
{
public Daughter() {}
public string Advice()
{
return(
}
~Daughter() {}
}
public class Test
{
public static string CallAdvice(Parent p)//使用基類
{
Wisdom parents = new Wisdom();
Wisdom
return(parents
}
public static void Main()
{
Dad d = new Dad();
Mom m = new Mom();
Daughter g = new Daughter();
//以下兩個為衍於基類的類
Console
Console
//以下為未衍於基類的類
//Console
}
}
}
代理 二
上一章講解了有關代理的基本應用
我想處理鼠標單擊事件和在鼠標單擊左鍵或右鍵處理一些代碼
this
現在你可以寫事件處理
MouseEventArgs members
Button 指示哪一個鍵被壓
Clicks 指示鼠標壓下次數及釋放狀態
Delta 指示鼠標轉動數量計數
X 鼠標點擊x坐標點
Y 鼠標點擊y坐標點
Event Handler
private void Form_MouseDown(object sender
{
switch (e
{
case MouseButtons
MessageBox
break;
case MouseButtons
MessageBox
break;
case MouseButtons
break;
default:
break;
}
}
在你的WinForm中測試你的程序
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
class I
{
public I(){}
~I() {}
public void IDoLoveYou()
{System
public void why(){System
}
class HER
{
public HER(){}
~HER() {}
public void IDo()
{System
public void slient(){System
}
class TELEPHONE
{public delegate void heartchat();
public TELEPHONE(){}
~TELEPHONE(){}
public void hello(){System
}
class chat{
static void Main() {
I i=new I();
HER her=new HER();
TELEPHONE telephone =new TELEPHONE();
telephone
TELEPHONE
tell();
TELEPHONE
answer();
TELEPHONE
ask();
TELEPHONE
noanswer();
}
}
如同java一樣
using System
開始一個線程
System
thread = new Thread(new ThreadStart(HelloWorld));
thread
注意
下面是啟動線程執行的函數
protected void HelloWorld()
{
string str ;
Console
}
}
殺死一個線程
線程類的 Abort()方法可以永久的殺死一個線程
if ( thread
{
thread
}
停止一個線程
Thread
thread
設定線程優先級
線程類中的ThreadPriority 屬性是用來設定一個ThreadPriority的優先級別
thread
掛起一個線程
調用線程類的Suspend()方法將掛起一個線程直到使用Resume()方法喚起她
if (thread
{
thread
}
喚起一個線程
通過使用Resume()方法可以喚起一個被掛起線程
if (thread
{
thread
}
From:http://tw.wingwit.com/Article/program/net/201311/13351.html