链式编程学习之练习篇

摘要:
C#之链式编程,最近很好像很火,我也尝试练习下。

C#之链式编程(函数模式编程),最近很好像很火,我也尝试练习下。

学习链式编程 需要懂两个知识点:

1.必须会扩展方法

2.lambda+(Func,Action)

好了,下面是我的学习代码:

classProgram
    {
        //study chained call 链式调用
        static void Main(string[] args)
        {
            //One 
            //Product p = new Product() { ProductName = "iphone5", Price = 300 }.First().Sencond().Third();
            //Two

            List<Product> list = new List<Product>()
            {
                new Product{ProductName="iphone5",Price=300},
                new Product{ProductName="iphone4s",Price=200},
                new Product{ProductName="ipad4",Price=100}
            };
            var s = list.GetIphone<Product, Product>(p =>
            {
                if (p.ProductName.Contains("iphone"))
                {
                    returnp;
                }
                else
                    return null;
            }).getFirst<Product>();
            Console.WriteLine(s.Price);
            Console.ReadKey();
        }
    }
    public classProduct
    {
        public string ProductName { get; set; }
        public int Price { get; set; }
        publicProduct First()
        {
            Console.WriteLine("First");
            return this;
        }
        publicProduct Sencond()
        {
            Console.WriteLine("Second");
            return this;
        }
        publicProduct Third()
        {
            Console.WriteLine("Third");
            return this;
        }
    }
    static classProductExtension
    {
        //get iphone
        public static IEnumerable<TResult> GetIphone<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult>selector)
        {
            foreach (var t insource)
            {
                if (selector(t) != null)
                {
                    yield returnselector(t);
                }
            }
        }
        //get first
        public static Tsource getFirst<Tsource>(this IEnumerable<Tsource>ilist)
        {
            returnilist.First();
        }
    }

免责声明:文章转载自《链式编程学习之练习篇》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇补习系列(2)-springboot mime类型处理微信小程序中页面跳转时如何传递一个对象?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

爬虫发起抓取被服务器拒绝访问返回403禁止访问解决方案

目前,许多网站的API接口返回的http代码返回代码为403,表示禁止访问。如果您也遇到这种情况,请不要急于首先修改网站的相关参数,即高级api的网站。使用浏览器访问。如果浏览器访问api接口,它可以成功。表示已设置权限。接口可能已被修改或无效,此时无法访问。调用此接口时,将捕获异常中的responseBody。数据很可能在该区域。这就是作者遇到的问题。直接...

ps图层组快捷键 一次打开或关闭所有的顶级图层组

这些快捷键是:·按Ctrl键并单击顶层图层组的箭头,可同时打开/关闭所有顶层图层组。...

c++ 发送消息,模拟拖拽文件

=NULL)28{29LPSTRpszRemote=VirtualAllocEx;30if31{32::SendMessage;33bResult=TRUE;34}35}36}3738if39{40delete[]pBuf;41pBuf=NULL;42}43 returnbResult;44}在调用此函数之前,首先打开接受拖动的进程ShellExecute;...

IOS崩溃日志解析(crash log)

IOS的应用程序少不了crash,互联网统计分析工具友盟有一项目错误分析的功能,专门用于应用程序崩溃日志统计,最近研究友盟上统计到的崩溃日志,在此对崩溃日志做一个简单的总结。否则,应用将被iOS终止,并产生低内存崩溃报告。这样,我们去我们的dSYM文件看看我们的UUID是否和崩溃日志上的UUID一致,只有dSYM文件的UUID和崩溃日志上的UUID一致,我们...

Spark 数据读取与保存(输入、输出)

SaveAsTextFile(字符串)scala&gt:importsscala.util.parsing.json.json(2)将json文件上载到HDFS[lxl@hadoop102spark]$hadoopfs投入。/示例/src/main/resources/people。json/(3)读取文件scala&gt;...

Linux系统glibc库版本信息查看

有时我们经常需要检查当前系统的glibc版本。您可以按如下方式进行检查:/lib/libc。所以。6有时:/lib/x86-64-linux/libc。因此6.将文件作为命令执行。为什么库可以直接运行?Glibc是gnu发布的libc库,即c运行时。glibc是linux系统中最低级别的api,几乎任何其他运行时都将依赖glibc。Gcc和libc是相互依赖...