using System; using System.Collections.Generic; using System.Text; namespace AnonymeMethoden { class Program { static void Main(string[] args) { Bank sparkasse = new Bank(); sparkasse.Add(new BankAccount("Donald Duck", -1000)); sparkasse.Add(new BankAccount("Daisy Duck", 3000)); sparkasse.Add(new BankAccount("Dagobert Duck", 2500000)); SearchHelper search = new SearchHelper(sparkasse); Console.WriteLine("\nPleitegeier"); search.FindUeberzogeneAccounts(); Console.WriteLine("\nMillionäre"); search.FindMillionaires(); Console.WriteLine("\nMehr als 5000 Taler"); search.FindLargerThan(5000); Console.WriteLine("\nMehr als 100 Taler"); search.FindLargerThan(100); Console.ReadKey(); } } public class BankAccount { private string _ownerName; private int _balance; public BankAccount(string ownerName, int balance) { _ownerName = ownerName; _balance = balance; } public string OwnerName { get { return _ownerName; } } public int Balance { get { return _balance; } } } public class Bank { public delegate bool FilterDelegate(BankAccount ba); List accounts = new List(); public void Add(BankAccount account) { accounts.Add(account); } public IEnumerable FindAccounts(FilterDelegate filter) { List filteredaccounts = new List(); foreach (BankAccount b in accounts) { if (filter(b)) yield return b; } } } public class SearchHelper { Bank bnk; public SearchHelper(Bank b) { bnk = b; } public void FindUeberzogeneAccounts() { foreach (BankAccount ba in bnk.FindAccounts(delegate(BankAccount acc) { return acc.Balance < 0; })) { Console.WriteLine("Owner: {0}, Balance: {1}", ba.OwnerName, ba.Balance); } } public void FindMillionaires() { foreach (BankAccount ba in bnk.FindAccounts(delegate(BankAccount acc) { return acc.Balance > 500000; })) { Console.WriteLine("Owner: {0}, Balance: {1}", ba.OwnerName, ba.Balance); } } public void FindLargerThan(int amount) { foreach (BankAccount ba in bnk.FindAccounts(delegate(BankAccount acc) { return acc.Balance > amount; })) { Console.WriteLine("Owner: {0}, Balance: {1}", ba.OwnerName, ba.Balance); } } } }