事件和委托的小案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 事件
{

    //声明委托
    public delegate void GradedDelegate(int i,string n,double s);
    public delegate void GradedDelegate2(int i, string n,double s, GradedDelegate s2);
    class Student
    {

        //声明事件
        public event GradedDelegate2 GradeEvent;
        public string name;
        public int ID;
        public double score;
        public void GetMessage(int id,string name,double score)
        {
            ID = id;
            this.score = score;
            this.name = name;
        }

        public void Notify()
        {
            if (GradeEvent != null)
            {
                Console.WriteLine("开始打分");

                GradeEvent(ID, name, score,GetMessage);
            }
        }
    }

   class Teacher
    {
        public void SetScore(int i, string name, double s, GradedDelegate SetMessage)
        {
            Console.WriteLine("输入学生的学号");
            Console.WriteLine("输入学生的姓名");
            Console.WriteLine("输入学生的分数");
            i=Convert.ToInt32(Console.ReadLine());
            name = Convert.ToString(Console.ReadLine());
            s = Convert.ToDouble(Console.ReadLine());
            SetMessage(i, name, s);
        }
    }

  class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            Teacher tea = new Teacher();

            //注册事件
            stu.GradeEvent+=new GradedDelegate2(tea.SetScore);
            stu.Notify();
            Console.WriteLine("学生的学号是:{0}/n学生的姓名为:{1}/n学生的成绩为:{2}", stu.ID, stu.name, stu.score);
            Console.ReadLine();
        }
    }
}

 

 

///

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值