zoukankan      html  css  js  c++  java
  • 参考例子,学习Func<T, TResult>委托

    这些天,开发ASP.NET MVC,其间有查找资料,发现一个全新的Func<T, TResult> 委托。让我们在开发时,节省与简化很多。

    在开发过程中,我们需要把一个泛型List<int>,把所有整型int串连起来转换为一串字符串。

    这时,我们会写一个方法:

    source code:

     public string ConnectToString(List<int> listInt)
            {
                StringBuilder _sb = new StringBuilder();
    
                listInt.ForEach(delegate (int i)
                {
                    _sb.Append(i.ToString());
                });
    
                return _sb.ToString();
            }
    View Code


    在视图中,我们就可以应用这个方法:


    呵呵,这是最普通的方法。

    如果改用委托呢?怎样写? 那我们可以使用委托的关键词delegate来宣告一个方法,方法的参数就是List<int> :

    public delegate string DelegateConnectToString(List<int> listInt);



    在视图中,我们使用这个委托:

     


    上面的方法,我们是按常规的写法,去new一个委托,下面我们大不必去new一个委托,直接使用一个匿名方法来替代:


    source code:

    public DelegateConnectToString ConnectToString1 = delegate (List<int> listInt)
               {
                   StringBuilder _sb = new StringBuilder();
    
                   listInt.ForEach(delegate (int i)
                   {
                       _sb.Append(i.ToString());
                   });
    
                   return _sb.ToString();
               };
    View Code


    在视图中,我们可以这样使用方法:


    在较高版本的.NET Framework的,已经有一个Func<T, TResult>委托了,使用它不必你去宣告一个自定义的委托,如上的DelegateConnectToString(List<int> listInt)。
    因此在写代码时,可以这样写法:



    source code:

     public Func<List<int>, string> ConnectToString2 = delegate (List<int> listInt)
            {
                StringBuilder _sb = new StringBuilder();
    
                listInt.ForEach(delegate (int i)
                {
                    _sb.Append(i.ToString());
                });
    
                return _sb.ToString();
            };
    View Code


    在视图中应用此方法:


  • 相关阅读:
    访问者模式
    oracle触发器简单实用示例
    C#控件交互效果类(也可以用作缩小面板放大,展示更多信息)
    23种设计模式探索C#
    windows快捷操作个人记录(常用)
    C#巧妙使用关键字async/await
    学习的枚举类型,结构以及初步了解数组
    目前学习.net时间让我摸不着头脑的事情
    对C#中几个循环语句的使用,请教
    学习了用控制台显示结果
  • 原文地址:https://www.cnblogs.com/insus/p/5377424.html
Copyright © 2011-2022 走看看