Thanks to:
http://davidhayden.com/blog/dave/archive/2006/05/28/2974.aspx
Anon methods, delegates, predicates. Anon methods are simple shortcuts so don't have to declare a predicate method.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestAnonymousMethods
{
public class Program
{
// using an anon method
static void Mainx(string[] args)
{
int[] _integers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] evenIntegers = Array.FindAll(_integers,
// this is the anonymous method below
delegate(int integer)
{
return (integer % 2 == 0);
}
);
foreach (int integer in _integers)
Console.WriteLine(integer);
foreach (int integer in evenIntegers)
Console.WriteLine(integer);
}
// not using anon method
static void Mainy(string[] args)
{
int[] _integers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// passing in IsEven..a delegate which represents the IsEven method
int[] evenIntegers = Array.FindAll(_integers, IsEven);
foreach (int integer in _integers)
Console.WriteLine(integer);
foreach (int integer in evenIntegers)
Console.WriteLine(integer);
}
static bool IsEven(int integer)
{
return (integer % 2 == 0);
}
// not using anon method and looking at predicate / delegate of Array.FindAll
static void Main(string[] args)
{
int[] _integers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// a predicate is expected
// passing in IsEven..a delegate which represents the IsEven method
int[] whatIsInBoth = Array.FindAll(_integers, IsDaveSequence);
foreach (int integer in whatIsInBoth)
Console.WriteLine(integer);
}
static bool IsDaveSequence(int integer)
{
bool returnState = false;
if ((integer == 1) || (integer == 3) || (integer ==4))
returnState = true;
return returnState;
}
}
}