委托:是一种数据类型,它类似函数指针,并且是类型安全,可以定义回调方法,只要是与委托的返回类型和参数类型相同的方法(或多个方法)都可以赋值给委托的一个实例,从而提高了程序的扩展性。但是如果对委托的实例任意的进行赋值操作就会破坏其封装性,这时我们可以通过event关键字来对委托的实例进行封装。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//监视者模式:
namespace ConsoleApplication28
{
//定义一个委托对象,并传递一个参数
public delegate void del();
class Program
{
static void Main(string[] args)
{
a a1 = new a();
b b1 = new b();
a1.d += b1.zhixing;
a1.fangfa();
Console.ReadLine();
}
}
//定义一个发布委托的对象
public class a
{
//定义一个事件对委托实例进行封装
public event del d;
public void fangfa()
{
for (int i = 0; i <= 100; i++)
{
if (i > 95)
{
if (d != null)
{
d();
}
}
}
}
}
//定义一个执行委托的对象
public class b
{
public void zhixing()
{
Console.WriteLine("水开了");
}
}
}
1 function getColor(id){ 2 var c = id.value; 3 var selectbox = document.getElementById("t"); 4 selectbox.style.backgroundColor = c; 5 } 6 7 </script> 8 <style type="text/css"> 9 div{ 10 border:1px solid #000; 11 width:800px; 12 height:300px; 13 } 14 #a{ 15 background-color:red; 16 } 17 #b{ 18 background-color:blue; 19 } 20 #c{ 21 background-color:#660000; 22 } 23 #d{ 24 background-color:green; 25 } 26 #e{ 27 background-color:pink; 28 } 29 </style> 30 </head> 31 32 <body> 33 <select id= "Color" onchange = "getColor(this)"> 34 <option id = "a" value = "red">红色</option> 35 <option id = "b" value = "blue">蓝色</option> 36 <option id = "c" value = "#660000">棕色</option> 37 <option id = "d" value = "green">绿色</option> 38 <option id = "e" value = "pink">粉红色</option> 39 </select> 40 <br/> 41 <div id = "t"></div> 42 43 </body>