Går en kurs i C# och enligt instruktionerna ska vi göra ett menysystem i consolen, med switch sats och sen ska all kod ligga i metoder.
Jag försöker det:
case "1":
Sok();
break;
och sen:
public static string Sok()
{
string soktitel;
Console.Write("Ange söktitel: ");
soktitel = Console.ReadLine();
foreach (Media s in media)
{
if (s.titel == soktitel)
{
Console.WriteLine(s);
}
}
return "";
}
Och visst det går, men när jag kommer till "Media s in media" så får jag att media inte existerar (det gör det, har deklarerat den precis ovanför switch satsen):
Är media en klassvariabel eller en lokal variabel för funktionen där du har din switchsats? Om det senare så kan du inte komma åt media från sok()-funktionen. Deklarera den som en klassvariabel eller skicka med den som argument till sok().
Hur vet jag om det är en klassvariabel eller lokalvaribel?
Se kod:
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
ArrayList media = new ArrayList();
while (true)
{
string val = Meny();
switch (val)
{
case "1":
//Sökfunktion ska till
Sok();
break;
case "2":
Film p = new Film();
media.Add(p);
break;
case "3":
//Console.Write("Vilken titel vill du ta bort (ange ID): ");
//nummer = int.Parse(Console.ReadLine());
//media.Remove(nummer);
break;
case "4":
Album o = new Album();
media.Add(o);
break;
case "5":
break;
case "9":
Environment.Exit(0);
break;
default:
Console.WriteLine("Ej giltig inmatning");
break;
}
}
}
Uppföljningsfråga som har med TypeCast att göra.
Det är samma arraylist, hur får jag ut inmatade värden i arraylisten som är av ett visst objekt?
Jag får felmeddelande "Specified cast is not valid" så jag antar det beror på det.
För att förtydliga:
foreach (Film s in media)
Ger mig det felmeddelandet om det inte är ett Film objekt den kollar av.
261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2