十年河东,十年河西,莫欺少年穷
学无止境,精益求精
List[span style="color: rgba(0, 0, 255, 1)">intint
//
var s = artys.Where(A => A > 5);
面试官让你写一个方法来实现Where,怎么写?
本篇提供两种方法,如下:
internal class Program
{
//委托是指向方法的类型
static void Main(string【】 args)
{
List[span style="color: rgba(0, 0, 255, 1)">intint
//
var s = artys.Where(A => A > 5);
var Rs1 = MyWhere(artys, A => A > 5);
foreach(var item in Rs1)
{
Console.WriteLine(item);
}
Console.WriteLine("-----------------------");
List[span style="color: rgba(0, 0, 255, 1)">stringstring
var Rs2 = MyWhereYield(strArtys, A => A == "tom");
foreach (var item in Rs2)
{
Console.WriteLine(item);
}
Console.Read();
}
static IEnumerable MyWhere(IEnumerable items ,Func
{
List results = new List();
foreach(var item in items)
{
if (f(item))
{
results.Add(item);
}
}
return results;
}
static IEnumerable MyWhereYield(IEnumerable items, Func
{
foreach (var item in items)
{
if (f(item))
{
yield return item;
}
}
}
}
本篇示例用到了委托,拉姆达表达式等
一个简单的示例:
using System;
using System.IO;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string【】 args)
{
//委托
f1 f_1 = add1;
f1 ff1 = new f1(add1);//
f2 f_2 = add2;
f2 ff2 = new f2(add2);
f3 f_3 = add3;
f3 ff3 = new f3(add3);
f4 f_4 = add4;
f4 ff4 = new f4(add4);//
f_1();
f_2(1, 2);
f_3();
f_4(1,2);
//
Action A_1 = add1;
Action[span style="color: rgba(0, 0, 255, 1)">int ,int
Func[span style="color: rgba(0, 0, 255, 1)">int
Func[span style="color: rgba(0, 0, 255, 1)">int,int,int
A_1();
A_2(1,2);
//代码效果参考:http://www.lyjsj.net.cn/wx/art_24213.html
A_3();A_4(1, 2);
//
f1 f1 = delegate ()
{
Console.WriteLine("我和add1一样,我是匿名方法");
};
f1();
f1 fff1 = () => { Console.WriteLine("我和add1一样,我是拉姆达表达式"); };
}
static void add1()
{
Console.WriteLine("我是add1");
}
static void add2(int a,int b)
{
Console.WriteLine("我是add2");
}
static int add3()
{
Console.WriteLine("我是add3");
return 0;
}
static int add4(int a,int b)
{
Console.WriteLine("我是add4");
return a + b;
}
delegate void f1();
delegate void f2(int a, int b);
delegate int f3();
delegate int f4(int a, int b);
}
}
View Code
详情请参考:C# Lambda表达式 由浅到深讲解C#-LINQ C# 匿名方法
@天才卧龙的博客