---
title: "C# fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/102348-c-fråga"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Jymdis"
published: "2004-04-26T11:16:26.000Z"
updated: "2004-04-27T11:05:54.000Z"
replies: 6
views: 516
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/102348-c-fråga"
---

# C# fråga

## #1 — Jymdis, 2004-04-26T11:16Z

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?

Permalänk: https://www.webforum.nu/p/102348

## #2 — Phorpher, 2004-04-26T12:16Z

Ä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().

Permalänk: https://www.webforum.nu/p/1333672

## #3 — Jymdis, 2004-04-26T12:39Z

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;
				}
			}
		}
```

Permalänk: https://www.webforum.nu/p/1333690

## #4 — Phorpher, 2004-04-26T13:11Z

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)
    {
        ...
    }
}
```

Permalänk: https://www.webforum.nu/p/1333711

## #5 — Phorpher, 2004-04-26T13:11Z

Dubbelpost... :OO

Permalänk: https://www.webforum.nu/p/1333712

## #6 — Viktor, 2004-04-26T13:17Z

Tråd flyttad från "C++"

/Viktor

Permalänk: https://www.webforum.nu/p/1333714

## #7 — Jymdis, 2004-04-27T11:05Z

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.

Permalänk: https://www.webforum.nu/p/1334281

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/102348-c-fråga
