Avatar billede tdh1309 Juniormester
06. oktober 2009 - 00:15 Der er 1 kommentar og
1 løsning

Trinvis tilgang til en objekt samling!

Hej

Jeg vil gerne have implementeret funktionalitet hvor jeg har en række objecter placeret, og jeg så kan tilgå dem trinvis.
Umiddelbart havde jeg tænkt mig at anvende en <List> - men har ikke helt de forventede egenskaber!

eksempel:
MineOpgaver
[opgave1; opgave2; opgave3; ... opgavex]

MineOpgaver.visaktuel
MineOpgaver.next

Når den når ud til opgavex, skal der startes forfra!
Har undersøgt om jeg kan gøre det med en "foreach" på en <List> men det lever ikke helt op til det forventede!

Så derfor modtages gode forslag gerne!
Avatar billede tdh1309 Juniormester
06. oktober 2009 - 00:21 #1
Nogle gange hjælper det at formulere et problem!

List<int> primes = new List<int>(new int[] { 1, 2, 3 });
Console.WriteLine (primes[0]);

Det udvides til:
List<int> primes = new List<int>(new int[] { 1, 2, 3 });
myPointer = 0;
Console.WriteLine (primes[myPointer]);
myPointer ++;
Console.WriteLine (primes[myPointer]);

Såre simpelt !
Avatar billede mireigi Novice
13. oktober 2009 - 13:14 #2
Jeg ville løse det sådan:


public class OpgaveSamling
{
  private List<Opgave> opgaver;
  private int index;

  public OpgaveSamling(List<Opgave> opgaver)
  {
      this.opgaver = opgaver;
      this.index = 0;
  }

  public Opgave Next()
  {
      Opgave opgave = new Opgave();
      index++;
      if (index < opgaver.Count)
        opgave = opgaver[index];
      else
        opgave = First();
      return opgave;
  }

  public Opgave Previous()
  {
      Opgave opgave = new Opgave();
      index- -;
      if (index >= 0)
        opgave = opgaver[index];
      else
        opgave = Last();
      return opgave;
  }

  public Opgave Current()
  {
      Opgave opgave = new Opgave();
      if (index >= 0 && index < opgaver.Count)
        opgave = opgaver[index];
      return opgave;
  }

  private Opgave First()
  {
      Opgave opgave = new Opgave();
      if (opgaver.Count > 0)
      {
        index = 0;
        opgave = opgaver[index];
      }
      return opgave;
  }

  private Opgave Last()
  {
      Opgave opgave = new Opgave();
      if (opgaver.Count > 0)
      {
        index = opgaver.Count - 1;
        opgave = opgaver[index];
      }
      return opgave;
  }
}


Hvis det er en consol applikation bruger dette:
private OpgaveSamling mineOpgaver;
public static void Main(object[] args)
{
  List<Opgave> opgaver = new List<Opgave();
  opgaver.Add(new Opgave([parameters]));
  opgaver.Add(new Opgave([parameters]));
  opgaver.Add(new Opgave([parameters]));
  opgaver.Add(new Opgave([parameters]));

  OpgaveSamling mineOpgaver = new OpgaveSamling(opgaver);
}


Derefter laver du noget kode så du kan kalde følgende metoder:
Next()
Current()
Previous()


Det virker måske som overkill, men det er en god øvelse i at oprette egne lister med specifikke krav.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester