delegate string IceCreamShop(string iceCreamFlavor);
static string Jenis(string iceCreamFlavor)
{
string betterFlavor = "no jenis for you";
switch (iceCreamFlavor.ToLower()) {
case "chocolate":
betterFlavor = "Askinosie Dark Chocolate";
break;
case "vanilla":
betterFlavor = "Ugandan Vanilla Bean";
break;
case "peanut butter":
betterFlavor = "Buckeye State";
break;
}
return betterFlavor;
}
static string CheapIceCreamStore(string iceCreamFlavor)
{
string ickyFlavor = "no cheap ice cream for you but that's probably not a bad thing";
switch (iceCreamFlavor.ToLower())
{
case "chocolate":
ickyFlavor = "mysterious brown stuff";
break;
case "vanilla":
ickyFlavor = "mayonnaise";
break;
case "peanut butter":
ickyFlavor = "dirt";
break;
}
return ickyFlavor;
}
static string Jenis(string iceCreamFlavor)
{
string betterFlavor = "no jenis for you";
switch (iceCreamFlavor.ToLower()) {
case "chocolate":
betterFlavor = "Askinosie Dark Chocolate";
break;
case "vanilla":
betterFlavor = "Ugandan Vanilla Bean";
break;
case "peanut butter":
betterFlavor = "Buckeye State";
break;
}
return betterFlavor;
}
static string CheapIceCreamStore(string iceCreamFlavor)
{
string ickyFlavor = "no cheap ice cream for you but that's probably not a bad thing";
switch (iceCreamFlavor.ToLower())
{
case "chocolate":
ickyFlavor = "mysterious brown stuff";
break;
case "vanilla":
ickyFlavor = "mayonnaise";
break;
case "peanut butter":
ickyFlavor = "dirt";
break;
}
return ickyFlavor;
}
And this is how you use it:
static void Main(string[] args)
{
IceCreamShop iceCreamShop = Jenis;
Console.WriteLine(iceCreamShop("chocolate"));
iceCreamShop = CheapIceCreamStore;
Console.WriteLine(iceCreamShop("chocolate"));
}
{
IceCreamShop iceCreamShop = Jenis;
Console.WriteLine(iceCreamShop("chocolate"));
iceCreamShop = CheapIceCreamStore;
Console.WriteLine(iceCreamShop("chocolate"));
}
The output is, predictably:
Askinosie Dark Chocolate
mysterious brown stuff
mysterious brown stuff
I can also pass in my ice cream shop delegate as a parameter!
static void PrintMenu(List<string> flavors, IceCreamShop iceCreamShop)
{
foreach (string flavor in flavors)
{
Console.WriteLine(iceCreamShop(flavor));
}
}
static void Main(string[] args)
{
var flavors = new List<string> { "chocolate", "vanilla", "peanut butter"};
IceCreamShop iceCreamShop = Jenis;
Console.WriteLine("Delicious Jeni's menu:");
PrintMenu(flavors, iceCreamShop);
Console.WriteLine();
iceCreamShop = CheapIceCreamStore;
Console.WriteLine("icky other ice cream store menu:");
PrintMenu(flavors, iceCreamShop);
}
{
foreach (string flavor in flavors)
{
Console.WriteLine(iceCreamShop(flavor));
}
}
static void Main(string[] args)
{
var flavors = new List<string> { "chocolate", "vanilla", "peanut butter"};
IceCreamShop iceCreamShop = Jenis;
Console.WriteLine("Delicious Jeni's menu:");
PrintMenu(flavors, iceCreamShop);
Console.WriteLine();
iceCreamShop = CheapIceCreamStore;
Console.WriteLine("icky other ice cream store menu:");
PrintMenu(flavors, iceCreamShop);
}
With the output:
Delicious Jeni's menu:
Askinosie Dark Chocolate
Ugandan Vanilla Bean
Buckeye State
icky other ice cream store menu:
mysterious brown stuff
mayonnaise
dirt
Askinosie Dark Chocolate
Ugandan Vanilla Bean
Buckeye State
icky other ice cream store menu:
mysterious brown stuff
mayonnaise
dirt
Columbus natives will appreciate the Jeni's reference. If you don't know what Jeni's is, I'm sorry to know that but it's such a good ice cream store that it's spreading across the country and you will hopefully soon know what I am talking about. I recommend Salty Caramel to all Jeni's first timers.