6237 Programmering II (Csharp) Agenda/List sort/find/Sort with delegate

From Teknologisk videncenter
< 6237 Programmering II (Csharp) Agenda‎ | List sort/find
Revision as of 12:58, 7 October 2015 by Orso (talk | contribs) (Created page with " <source lang=csharp> class Program { public static int SortByNavn(Person x, Person y) { return String.Compare(x.Navn, y.Navn); } public static int SortByEmail(Person x, ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
class Program
{

	public static int SortByNavn(Person x, Person y)
	{
		return String.Compare(x.Navn, y.Navn);
	}

	public static int SortByEmail(Person x, Person y)
	{
		return String.Compare(x.Email, y.Email);
	}

	static void Main(string[] args)
	{
		Person p1 = new Person("Tommy", "tommys@mail.dk");		
		Person p2 = new Person("Jens", "jens@mail.dk");
		Person p3 = new Person("Holger", "holgers@mail.dk");
		List<Person> pLst = new List<Person>();
		pLst.Add(p1);
		pLst.Add(p2);
		pLst.Add(p3);

		pLst.Sort(SortByNavn);
		pLst.Sort(SortByEmail);
	}
}

På samme måde kan vi også anvende indbyggede søgefunktioner. Her skal vi lave en metode programmet kan anvende til at fortælle hvad der søges efter. I dette tilfælde navnet Jens.

class Program
{
	String searchName;
	static bool findName(Person p)
	{
		return p.Navn == searchName;
	}

	static void Main(string[] args)
	{
		Person p1 = new Person("Tommy", "tommys@mail.dk");		
		Person p2 = new Person("Jens", "jens@mail.dk");
		Person p3 = new Person("Holger", "holgers@mail.dk");
		List<Person> pLst = new List<Person>();
		pLst.Add(p1);
		pLst.Add(p2);
		pLst.Add(p3);

		searchName = "Jens";
		Person p = pLst.Find(findName);
	}
}

Hvis det skal være rigtig smart kan vi lave funktionen i vha en anden funktion. Her er det FindByName der returnerer en funktion der finder en navn.

class Program
{
	static String searchName;
	static bool findName(Person p)
	{
		return p.Navn == searchName;
	}

	static Predicate<Person> FindByName(String name)
	{
		return delegate(Person p)
		{
			return p.Navn == name;
		};
	}

	static void Main(string[] args)
	{
		Person p1 = new Person("Tommy", "tommys@mail.dk");		
		Person p2 = new Person("Jens", "jens@mail.dk");
		Person p3 = new Person("Holger", "holgers@mail.dk");
		List<Person> pLst = new List<Person>();
		pLst.Add(p1);
		pLst.Add(p2);
		pLst.Add(p3);

		Person p = pLst.Find(FindByName("Holger"));
	}
}