8 svar
350 visningar
liri 5
Postad: 25 apr 2022 14:34 Redigerad: 25 apr 2022 14:39

Hur når man en lista från en annan metod?

Okej, så jag försöker nå min lista som finns i en annan metod, har provat att flytta listan utanför metoden men det verkar inte fungera heller.

using System;
using System.Collections.Generic;

namespace bilhandlaren
{
    class Program
    {
        public static void regBil()
        {
            List<string> nyBil = new List<string>();
            string input = "";
            while (input.ToLower() != "klar")
            {
                Console.WriteLine("Spara så många objekt du vill, skriv klar när du är färdig.");
                input = Console.ReadLine();
                nyBil.Add(input);
            }
        }
        public static void regKund()
        {
            List<string> nyKund = new List<string>();
            string input = "";
            while (input.ToLower() != "klar")
            {
                Console.WriteLine("Spara så många kunder du vill, skriv klar när du är färdig.");
                input = Console.ReadLine();
                nyKund.Add(input);
            }
        }
        public static void bilLista()
        {
            //for (int i = 0; i < nyBil.Count; i++) ;
        }
        public static void kundLista()
        {

        }

        static void Main(string[] args)
        {
            bool minBool = true;
            while (minBool == true)
            {
                Console.WriteLine("Välkommen, hur vill du gå vidare?" +
                    "\n 1. Registrera en ny bil" +
                    "\n 2. Registrera en ny kund" +
                    "\n 3. Visa alla registrerade bilar" +
                    "\n 4. Visa alla registrerade kunder" +
                    "\n 5. Avsluta");
                int menyval = int.Parse(Console.ReadLine());

                switch (menyval)
                {
                    case 1:
                        regBil();
                        break;

                    case 2:
                        regKund();
                        break;

                    case 3:
                        /*foreach (string i in nyBil) //hur ska den nå listan?
                        {

                        }
                        for (int i = 0; i < nyBil.Count; i++) //hur ska den nå listan?
                        Console.WriteLine("Lista över alla bilar:" + nyBil[i]);
                        */
                        break;

                    case 4:
                        //kalla på kundlistan
                        break;

                    case 5:
                        minBool = false;
                        break;

                    default:
                        Console.WriteLine("Vänligen ange en siffra mellan 1-5.");
                        break;
                }
            }
        }
    }
}
Laguna Online 28445
Postad: 25 apr 2022 14:36

Kan du indentera koden korrekt? Använd kodverktyget som ser ut som {;}.

liri 5
Postad: 25 apr 2022 14:36 Redigerad: 25 apr 2022 14:41

.

Laguna Online 28445
Postad: 25 apr 2022 14:39

Om du lägger nyBil direkt under class Program borde det fungera.

(Men du ska inte deklarera den på nytt i regBil i så fall.)

liri 5
Postad: 25 apr 2022 14:42

Det var det jag försökte göra men då går det ej att lägga till en bil,

namespace bilhandlaren
{
    class Program
    {
        List<string> nyBil = new List<string>();
        public static void regBil()
        {
            string input = "";
            while (input.ToLower() != "klar")
            {
                Console.WriteLine("Spara så många objekt du vill, skriv klar när du är färdig.");
                input = Console.ReadLine();
                nyBil.Add(input); ((((((här uppstår röd linje under nyBil))))))
            }
        }
Laguna Online 28445
Postad: 25 apr 2022 14:54

Om metoden (regBil) är static så måste attributet (nyBil) också vara det.

Kan du peka med musen på det röda och få nåt felmeddelande? Den borde säga nåt i den stilen.

liri 5
Postad: 25 apr 2022 15:57 Redigerad: 25 apr 2022 16:43


Tillägg: 25 apr 2022 16:42

Löste det genom att flytta listan under program och snge static innan listan, tack snälla för hjälpen 😊

anders_k 234
Postad: 25 apr 2022 21:22

Ett annat alternativ är att skapa listan i Main, sedan skicka in listan till metoderna

  static void Main(string[] args)
  {
    bool minBool = true;
    
    List<string> nyBil = new List<string>();
    List<string> nyKund = new List<string>();
    
    do
    {
      Console.WriteLine("Välkommen, hur vill du gå vidare?" +
          "\n 1. Registrera en ny bil" +
          "\n 2. Registrera en ny kund" +
          "\n 3. Visa alla registrerade bilar" +
          "\n 4. Visa alla registrerade kunder" +
          "\n 5. Avsluta");
      int menyval = int.Parse(Console.ReadLine());

      switch (menyval)
      {
        case 1:
            regBil(ref nyBil);
            break;

        case 2:
            regKund(ref nyKund);
            break;
        //...
        default:
            Console.WriteLine("Vänligen ange en siffra mellan 1-5.");
            break;
      }
    }
    while (minBool == true);
  }

Sedan gör du om dina regBil/regKund så här

public static void regBil(ref List<string> nyBil)
{
  string input = "";
  do
  {
    Console.WriteLine("Spara så många objekt du vill, skriv klar när du är färdig.");
    input = Console.ReadLine();
    if (input.ToLower() != "klar") // om du inte vill ha en sista bil "klar"
    {
      nyBil.Add(input);
    }
  }
  while (input.ToLower() != "klar");
}
liri 5
Postad: 26 apr 2022 00:57

Ska definitivt prova det imorgon! Tack snälla för hjälpen

Svara Avbryt
Close