Re: What is a "Predicate delegate"



Good point, Brian!

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Numbskull

Show me your certification without works,
and I'll show my certification
*by* my works.

"Brian Gideon" <briangideon@xxxxxxxxx> wrote in message
news:1143662995.907969.139560@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Kevin,

Excellent description. In addition you can use anonymous methods and
delegate inference to write it all in one line of code.

int result = Numbers.Find(delegate(int i) { return i < 5; });

Brian

Kevin Spencer wrote:
A delegate is like a function pointer. A Predicate delegate is a very
cool
use of Delegates which is used with various Generic Lists, Arrays and
Collections. Since a Generic List does not specify a data type, that is,
the
data type of the items in the List is set with a type parameter, how
would
one write a Find() function for a Generic List? Since nothing is known
about
the data type being searched for, one cannot know what sort of condition
is
used to discriminate between one item and another.

The Predicate delegate is a Generic method which takes an object of type
T
as a parameter. It returns true or false, indicating whether or not the
object of type T satisfies the condition it tests. The Predicate delegate
is
assigned the same type as the List when the List type parameter is passed
to
the instance of the Generic List created. The author of the code knows
what
the data type is, and can write a method that works with the type passed
to
test it and see whether it is whatever the author wants it to be. The
Find()
method uses the Predicate delegate method created to test each item in
the
List, and returns the first item in the List for which the Predicate
delegate returns true.

As an example, let's say that we have a Generic List of type Int32:

private List<int> Numbers = new List<int>();

You want to find the first item in the List that is less than 5. So, you
create your method:

private static bool IsLessThanFive(int i)
{
return (i < 5);
}

So, now you call the Find() method:

int result = Numbers.Find(new Predicate<int>(IsLessThanFive);

The IsLessThanFive Predicate delegate is called for each item in the
list,
passing that item as the parameter, until one of the calls returns true.
That is the number that is assigned to result.

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Numbskull

Show me your certification without works,
and I'll show my certification
*by* my works.


"Jeff S." <A@xxxxx> wrote in message
news:umm5vw0UGHA.4864@xxxxxxxxxxxxxxxxxxxxxxx
I was recently advised:
<< Use List<struct> and Find() using different Predicate delegates for
your different search needs.>>

What is "Predicate delegate" as used in the above recommendation?

Thanks.




.



Relevant Pages

  • Re: What is a "Predicate delegate"
    ... use of Delegates which is used with various Generic Lists, ... The Predicate delegate is a Generic method which takes an object of type T ... assigned the same type as the List when the List type parameter is passed to ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: What is a "Predicate delegate"
    ... use of Delegates which is used with various Generic Lists, ... The Predicate delegate is a Generic method which takes an object of type T ...
    (microsoft.public.dotnet.languages.csharp)
  • Windows 2000 server issue
    ... accurately parse the lists of vulnerable machines produced by the scan ... of addresses directly on the script. ... Summer's Hottest Certification Just Got HOTTER! ... you can save 33% off of the TICSA certification ...
    (NT-Bugtraq)
  • [fw-wiz] PC Firewall Evaluations
    ... certification short of ICSA certification and again that is a short list. ... ware.htm are nice lists, however, they leave out vulnerabilities and ... Does anyone know of a comprehensive list of non-ICSA certified PC Firewalls ...
    (Firewall-Wizards)
  • If you use AOL or Yahoo, its time to find a new ISP
    ... Also realize that what he says of the Goodmail ... program's impact on Listserv lists, will also affect lists run by other ... yet unspecified per-message fee. ... I have nothing against certification as an additional tool in the ...
    (rec.hunting.dogs)