Dierentuin advanced
In main
//dieren staan ergens in List<Dier> diertjes
//gebruiker gaf bij invoer f in als keuze:
if(userinput=="f")
{
Console.WriteLine("Welk dier?")
string dierkeuze=Console.ReadLine();
switch(dierkeuze)
{
case "Slang":
foreach(var dier in diertjes)
{
if(dier is Slang)
{
(dier as Slang).Zegt();
}
}
break;
case "Varken":
//idem met Varken
}
}
Pro-pro oplossing
Voorgaande resulteert in aardig wat quasi identieke code in de switch. Je kan zelf een generieke methode maken (hebben we niet in leerstof gezien) als volgt (in hoofdprogramma):
static void Zegt<T>(List<Dier>dieren) where T: Dier
{
foreach(var dier in dieren)
{
(dier as T)?.Zegt();
}
}
(de where
is een zogenaamde constraint, uitgelegd hier)
In de switch krijg je dan:
case "Slang":
Zegt<Slang>(dieren);
break;
case "Varken":
Zegt<Varken>(dieren);
break;
//...
Pokémons vergelijken
In klasse Pokemon
:
public override bool Equals(object obj)
{
Pokemon tevgl = obj as Pokemon;
if(Naam==tevgl.Naam && Level == tevgl.Level)
{
if (HP_Base == tevgl.HP_Base && Attack_Base == tevgl.Attack_Base && ... )
return true;
}
return false;
}