备案的网站名称能重复备案吗,wordpress多域一网,个人备案域名可以做哪些网站吗,深圳网站建设首选上榜网络在上一篇随笔中#xff0c;简要说明了怎样定义委托#xff0c;定义事件#xff0c;订阅事件#xff0c;最后也实现了效果#xff0c;就是当员工类的某个对象#xff0c;执行某个事件时#xff0c;委托事件被触发#xff0c;后面也得到了结果#xff0c;但是想象一下实… 在上一篇随笔中简要说明了怎样定义委托定义事件订阅事件最后也实现了效果就是当员工类的某个对象执行某个事件时委托事件被触发后面也得到了结果但是想象一下实际场景中如果办公室有员工玩游戏了这个时候我们要找到是谁在哪个位置玩游戏而不是向所有人广播有人玩游戏了这样并没有什么意义。因此需要对上篇的代码进行改进所以就要想办法传递参数参数中需要包含必要的信息。 在本例中关于参数首先创建了一个参数类 CustomeEvebtArgs 且继承自EventArgs这个我看的例子人家就是这样说的“是包含事件数据的类的基类” 1 public class CustomeEvebtArgs:EventArgs//参数类2 {3 string name ;//员工姓名4 int number 0;//所在办公室编号5 public CustomeEvebtArgs()6 {7 }8 public string Name9 {
10 get { return this.name; }
11 set { this.name value; }
12 }
13 public int Number
14 {
15 get { return this.number; }
16 set { this.number value; }
17 }
18 } 用这个参数类的对象去保存相关信息。而此时此刻员工类就应当对应有姓名和座位号了代码同上。 1 // 定义一个委托打小报告的狐狸
2 /// /summary
3 /// param namesender触发事件的源/param
4 /// param namee触发时间所携带的参数/param
5 public delegate void DelegateClassHandle(object sender,CustomeEvebtArgs e); 此时委托事件函数就应当带有定义委托时的上述两个参数了 PlayGame(this,e) ; 这个时候 this 代表的是该实例也就是触发委托事件的实例。e则是该实例中的参数信息其中e的初始化如下 CustomeEvebtArgs e new CustomeEvebtArgs();e.Name _name;e.Number _number; 只要定义员工对象初始化后被初始化的信息就作为参数被传递 public void Notify(object sender,CustomeEvebtArgs e){Console.WriteLine(报告老板{0}在{1}玩游戏哦,e.Name,((Employee)sender).Number);} 注意处理事件的函数其函数前面一定要和委托定义时相同如上所示。而上面的参数也可以用多种方式既可以用参数类对象的属性表示也可以用触发事件的实例的属性表示。 当然事件被触发后也可以被多个函数处理比如添加一个“罚工资”的函数 static void penalty(object sender, CustomeEvebtArgs e) { Console.WriteLine(罚款100); } 这样只需我的委托函数关联上该函数即可 e.PlayGame new DelegateClassHandle(penalty); 这里我没有重新创建一个类而是直接将该函数作为静态函数让委托直接调用函数名而在定义该函数时不要忘了和定义委托时要有同样的参数 转载于:https://www.cnblogs.com/80X86/p/5005085.html