惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
F
Fortinet All Blogs
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
罗磊的独立博客
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
U
Unit 42
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
G
Google Developers Blog
H
Help Net Security

博客园 - 晰雨的天空

换工作了。去微软了。可惜是vender,但总算也是有机会去sigma上班了。 本人对于magicajax使用说明的翻译,还有很多不足和错误。欢迎大家指正. 跳到新页面,刷新框架. - 晰雨的天空 - 博客园 datagrid 超连接弹出新窗体 - 晰雨的天空 - 博客园 转 datagrid的操作 身份验证票 和 form验证 - 晰雨的天空 excel c# 访问excel textbox 只能输入数字控制 - 晰雨的天空 - 博客园 静态构造器和静态属性的执行顺序 索引器的简单使用 参数定义符号params 使用 C#中废弃一个方法小技巧 (转自terrylee)只为收藏 复制表 , 拷贝表 怎样使按钮响应回车键(转) 路过的朋友都来看看,说说.程序员,什么是终点...哪里有方向 一道c#题.请高手给个答案 Session.Abandon和Session.Clear有何不同? C#中的const和readonly
委托和事件
晰雨的天空 · 2006-03-06 · via 博客园 - 晰雨的天空

而在写程序中,假设程序员就是老板,有两个类分别为主管和员工,而主管小王和员工小张就是两个类的对象实例。员工类有一个方法:玩游戏,同时就有一个玩游戏的事件,他一玩游戏就会激发这个事件。而主管类就是负责处理该事件的,他负责把玩游戏的员工的薪水扣除500。
public class Employee
 {

  public event PlayGameHandler   PlayGame;


  private int m_salary;
  
  public Employee()
  {
   Console.WriteLine("create a employee!");
   m_salary = 2000;
  }

  public int salary
  {
   get{return this.m_salary;}
   set{m_salary=value;}
  }
  public void EmployeePlayGame()
  {
      Console.WriteLine("begin  play game!");
   System.EventArgs e = new System.EventArgs();
   OnPlayGame(e);
  }

  protected virtual void OnPlayGame(EventArgs e)
  {
   if(PlayGame!=null)
   {
      PlayGame(this,e);
   }
  }

     }

public delegate void PlayGameHandler(object sender,System.EventArgs e);

 public class Manager
 {
  public Manager()
  {
    Console.WriteLine("create a manager!");
  }

  public void CutSalary(object sender,EventArgs e)
  {
     Console.WriteLine("begin cut");
     Employee  ely = (Employee)sender;
     ely.salary = ely.salary -100;
           Console.WriteLine("end cut");
  }
 }

class Class1
 {
  /// <summary>
  /// 应用程序的主入口点。/// </summary>
  [STAThread]
  static void Main(string[] args)
  {
    Console.WriteLine("scene begin..........");
    Manager m = new Manager();
    Employee ely = new Employee();
    ely.PlayGame += new PlayGameHandler(m.CutSalary);
   Console.WriteLine("salary is "+ely.salary.ToString()+"");
   Console.WriteLine("play game");
   Console.WriteLine();
   Console.WriteLine();
   Console.WriteLine();

   ely.EmployeePlayGame();
   Console.WriteLine("salary is "+ely.salary.ToString()+"");
   Console.WriteLine("scene is over");
   Console.ReadLine();

  }
 }