要求:使用传统方式(。net 1.1 类库)、匿名方法和lambda表达式查找一个int数组中的偶数。
using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace TestCS
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Tranditional");
TranditionalDelegateSyntax();
Console.WriteLine("AnonymousMethod");
AnonymousMethodSyntax();
Console.WriteLine("AdvancedAnonymousMethodSyntax");
AdvancedAnonymousMethodSyntax();
Console.WriteLine("LambdaExpressionSyntax");
LambdaExpressionSyntax();
}
static void LambdaExpressionSyntax()
{
List<int> list = new List<int>();
list.AddRange(new int[] { 2, 4, 3, 28, 45, 9 });
//no "predicate" ,no "delegate",no other stand-alone method
//ArgumentsToProcess => StatementsToProcessThem
//List<int> evenNumbers =list.FindAll(i=>(i%2)==0);
//也可以
//List<int> evenNumbers = list.FindAll((int i) => (i % 2) == 0);
//也可以
//List<int> evenNumbers = list.FindAll((i) => (i % 2) == 0);
//也可以
//List<int> evenNumbers = list.FindAll((i) => ((i % 2) == 0));
//也可以
List<int> evenNumbers =list.FindAll((i)=>
{
bool isEven=((i%2)==0);
return isEven;
});
foreach (int en in evenNumbers)
{
Console.WriteLine(en.ToString());
}
}
static void AdvancedAnonymousMethodSyntax()
{
List<int> list = new List<int>();
list.AddRange(new int[] { 2, 4, 3, 28, 45, 9 });
//no 'predicate',no other stand-alone method
List<int> evenNumbers = list.FindAll(
delegate(int i)
{
return (i % 2) == 0;
}
);
foreach (int en in evenNumbers)
{
Console.WriteLine(en.ToString());
}
}
static void AnonymousMethodSyntax()
{
List<int> list = new List<int>();
list.AddRange(new int[] { 2, 4, 3, 28, 45, 9 });
//no other stand-alone method
List<int> evenNumbers = list.FindAll(new Predicate<int>(delegate(int i)
{
return (i % 2) == 0;
}
));
foreach (int en in evenNumbers)
{
Console.WriteLine(en.ToString());
}
}
private static void TranditionalDelegateSyntax()
{
List<int> list = new List<int>();
list.AddRange(new int[] { 2,4,3,28,45,9});
Predicate<int> callback = new Predicate<int>(IsEvenNumber);
List<int> evenNumbers = list.FindAll(callback);
foreach (int en in evenNumbers)
{
Console.WriteLine(en.ToString());
}
}
static bool IsEvenNumber(int i)
{
return (i % 2) == 0;
}
}
}