博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事件的好处~实现对修改的封闭,对扩展的开放!~续
阅读量:5924 次
发布时间:2019-06-19

本文共 1227 字,大约阅读时间需要 4 分钟。

本文章主要以上一篇文件的代码在写法上进行一个优化,更代码更精简,更能发挥.net 3.5为我们提供的已有功能,呵呵!

首先,为了只有返回值的委托来说,我们是不用再去定义它的,完成可以用.net提供的Func<T>这个委托来实现

 

同时,这个委托也支付多个输入参数的情况,和Func<>对应的一个委托叫Action<>,它没有返回值,可以由多个输入参数,下面是对Func<> 委托的使用实例,同样使用上一篇文章作为例子

 public class ReturnMessage

    {
        public static event Func<string> ReturnMsg;
        public static string OnReturnMsg()
        {
            if (ReturnMsg != null)
                return ReturnMsg();
            else
                return "默认字符";
        }
    }

我们看到了,代码比上一篇文章精简了一些,在订阅事件时,同样可以使用匿名方法来实现

 ReturnMessage.ReturnMsg += delegate() { return "OK"; }; //不要以为这样省内存空间,它只是代码上精简了,事实上系统为我们自动建立了一个方法

在触发时,和上一篇文件没有区别,在这里就不列举代码了。

再把Action<>委托的例子写上,代大家参考

public class ReturnMessage

    {
        /// <summary>
        /// 返回消息事件
        /// </summary>
        public static event Func<string> ReturnMsg;
        /// <summary>
        /// 重定向事件
        /// </summary>
        public static event Action RedirectUrl;
        /// <summary>
        /// 触发ReturnMsg事件
        /// </summary>
        /// <returns></returns>
        public static string OnReturnMsg()
        {
            if (ReturnMsg != null)
                return ReturnMsg();
            else
                return "默认字符";
        }
        /// <summary>
        /// 触发OnRedirectUrl事件
        /// </summary>
        public static void OnRedirectUrl()
        {
            if (RedirectUrl != null)
                RedirectUrl();
        }
    }

调用方法:

 ReturnMessage.RedirectUrl += delegate() { Console.WriteLine("去新浪吧"); };

触发方法:

ReturnMessage.OnRedirectUrl();

这样就是我满意的结果了,呵呵!自己可以根据业务要求去写重定义的页面地址,呵呵。

转载地址:http://kcavx.baihongyu.com/

你可能感兴趣的文章
Hadoop Streaming框架使用(一)
查看>>
无根的根:无名师的 Unix 心传
查看>>
如何隐藏vs2005的起始页
查看>>
关于自动化测试
查看>>
让 VS 编译 MonoTouch 项目源文件不再出错
查看>>
asp.net里获取当前时间,并字符串格式化转换(转)
查看>>
jQuery-插件-背景滑动菜单(第二次自已偿试写插件)
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
Android 打包签名 从生成keystore到完成签名
查看>>
Objective-C 编程语言官网文档(十二)-线程
查看>>
Visio绘制系统图
查看>>
如何让oracle的select强制走索引
查看>>
【面试虐菜】—— JAVA面试题(1)
查看>>
Oracle事务
查看>>
文档在线预览的实现
查看>>
jqueryui.position.js源代码分析
查看>>
一个奇妙的java坑:Long 类型的比较
查看>>
java基础---->摘要算法的介绍 (转)
查看>>
mysql中binlog_format模式与配置详解
查看>>
互联网协议入门
查看>>