您的位置:首页 > 编程语言

链式编程学习之练习篇

2013-08-10 14:16 288 查看
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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: