Anonymous Methods in C# 2.0

Provided by Dave Juth, Senior Systems Architect

Anonymous methods, a new feature in C# 2.0, allow you to write more concise code and avoid some of the hassles of hooking up event handlers for trivial operations. Instead of declaring a method that can be accessed by a delegate, you can now write the method’s code inline.

The following example illustrates two anonymous methods, one to sort a list of people and one to loop through and output each member of the list:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace AnonymousMethodsConsole

{

    public class Program

    {

        static void Main(string[] args)

        {

            List<Person> people = new List<Person>();

 

            Person teacher = new Person();

            teacher.LastName = "Smith";

            teacher.FirstName = "Joe";

            teacher.DOB = new DateTime(1959, 12, 20);

 

            people.Add(teacher);

 

            Person doctor = new Person();

            doctor.LastName = "Williams";

            doctor.FirstName = "Mary";

            doctor.DOB = new DateTime(1973, 5, 5);

 

            people.Add(doctor);

 

            Person lawyer = new Person();

            lawyer.LastName = "Jones";

            lawyer.FirstName = "Tom";

            lawyer.DOB = new DateTime(1966, 3, 15);

 

            people.Add(lawyer);

 

            people.Sort(delegate(Person p1, Person p2) {return Comparer<DateTime>.Default.Compare(p1.DOB, p2.DOB);});

 

            people.ForEach(delegate(Person p) { Console.WriteLine(p.FirstName + " " + p.LastName + " " + p.DOB.ToShortDateString()); });

 

            Console.ReadKey();

        }

    }

 

    public class Person

    {

        public string LastName = string.Empty;

        public string FirstName = string.Empty;

        public DateTime DOB;

 

        public Person()

        {           

        }

    }

}

The first anonymous method is a custom sort for a person’s date of birth, and it sorts the collection of people by the DOB property:

people.Sort(delegate(Person p1, Person p2) {return Comparer<DateTime>.Default.Compare(p1.DOB, p2.DOB);});

 The second prints out the sorted collection of people using an anonymous method instead of a typical foreach loop.

people.ForEach(delegate(Person p) { Console.WriteLine(p.FirstName + " " + p.LastName + " " + p.DOB.ToShortDateString()); });

 

Additional Resources

 

 

Thank you! Thank you! I just finished reading this document, which was part of a link in the recent Buzz newsletter. I have printed it for others to read, especially those skeptical on the powers of Access and its capabilities.

Darren D.


View all FMS products for Microsoft Access All Our Microsoft Access Products

 

 

Free Product Catalog from FMS