C# 委托3

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

namespace detegateClass2
{
    class StudentDelegate
    {
        private int score;

        public delegate string DelegateResponse(int score);

        public DelegateResponse delegateInstance;

        public void setScore(int score)
        {
            this.score = score;

            if (score > 100 || score < 0)
            {
                Console.WriteLine("分数不正确");
            }
            else
            {
                string result;

                result = delegateInstance(score);//这里采用了委托的方法取代上个版本的接口的方法...
              
                Console.WriteLine("学生受到的回复数 : "+ result);
            }
        }
    }

    class TeacherDelegate
    {
        public string response(int score)
        {
            if (score > 60)
            {
                return "不错!! " + score + "分,是个好分数";
            }
            else
            {
                return "加油!! " + score + "分,证明你还有很大的进步空间!";
            }
        }
    }


    /// <summary>
    /// 这里采用委托的方法来模拟学生在考试后,收到来自家长.老师.同学等的回复的事情
    /// </summary>
    class DelegateClass
    {
        /// <summary>
        /// 委托代理的好处是现在做出动作的对象不用再继承接口了...更加的面向对象
        /// </summary>
        /// <param name="args"></param>

        public static void Main(string[] args)
        {
            StudentDelegate s = new StudentDelegate();
            TeacherDelegate t = new TeacherDelegate();

            //委托不同接口的体现在:委托包装的方法,,任何动作的接收方例如Student,不用再定义setX的方法了
            s.delegateInstance = new StudentDelegate.DelegateResponse(t.response);
            s.setScore(20);
 
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值