zoukankan      html  css  js  c++  java
  • 链式编程学习之练习篇

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

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

    1.必须会扩展方法

    2.lambda+(Func,Action)

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

    class Program
        {
            // 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"))
                    {
                        return p;
                    }
                    else
                        return null;
                }).getFirst<Product>();
    
                Console.WriteLine(s.Price);
                
                Console.ReadKey();
                
            }
        }
    
        public class Product
        {
            public string ProductName { get; set; }
            public int Price { get; set; }
    
            public Product First()
            {
                Console.WriteLine("First");
                return this;
            }
            public Product Sencond()
            {
                Console.WriteLine("Second");
                return this;
            }
            public Product Third()
            {
                Console.WriteLine("Third");
                return this;
            }
        }
    
        static class ProductExtension
        {
            
            //get iphone
            public static IEnumerable<TResult> GetIphone<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
            {
    
                foreach (var t in source)
                {
    
                    if (selector(t) != null)
                    {
                        yield return selector(t);
                    }
                }
                
            }
    
            //get first
            public static Tsource getFirst<Tsource>(this IEnumerable<Tsource> ilist)
            {
                return ilist.First();
            }
            
        
    
    
        }
  • 相关阅读:
    struts1与struts2的防止表单重复提交
    JSTL 笔记
    fiddler的columns添加HTTPMethod
    兼容性测试技巧
    测试基础知识总结
    测试用例的书写方式及测试模板大全【转】
    软件测试的方法分类
    解决vue不支持promise语法问题
    vue-router 导航守卫
    e.target与事件委托简例【转】
  • 原文地址:https://www.cnblogs.com/flyfish2012/p/3250032.html
Copyright © 2011-2022 走看看