JymdisMedlem sedan mars 20016 260 inlägg Hej!
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):
ArrayList media = new ArrayList();
Den enkla frågan, var består mitt tankefel i?
PhorpherMedlem sedan feb. 20002 300 inlägg Ä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().
JymdisMedlem sedan mars 20016 260 inlägg 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;
}
}
}
PhorpherMedlem sedan feb. 20002 300 inlägg media är i det här fallet en lokal variabel.
Varför? Den är deklarerad i din funktion Main.
Hade det varit en klassvariabel hade den varit deklarerad som t.ex:
public class klassen
{
[B]private ArrayList media;[/B]
public static void Main(string[] args)
{
...
}
}
JymdisMedlem sedan mars 20016 260 inlägg 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.