Avatar billede netro Nybegynder
06. august 2007 - 09:53 Der er 10 kommentarer og
2 løsninger

Generisk liste

Hvordan kan man vha. delegates finde summen af _nummer i de test-objekter, der findes i testliste?

class test
{
  private int _nummer;
  public int nummer
  {
      get { return _nummer; }
      set { _nummer = value; }
  }
}

List<test> testliste;
Avatar billede nielle Nybegynder
06. august 2007 - 10:31 #1
Hvad mener du med at det skal ske via delegates?

Og hvorfor er det ikke nok at hente værdien som testliste.Count?
Avatar billede netro Nybegynder
06. august 2007 - 10:46 #2
Count giver mig bare antallet af objekter i listen. Jeg vil gerne have summen af "nummer".

List<test> testliste = new List<test>();
testliste.Add(new test(6));
testliste.Add(new test(13));

(Constructor mangler i eksempel-klassen)
Så skal jeg finde tallet 20 - helst uden en foreach.
Avatar billede netro Nybegynder
06. august 2007 - 10:47 #3
Øhh... 19 selvfølgelig.
Avatar billede hmortensen Nybegynder
06. august 2007 - 16:18 #4
Du kan gøre det med en anonym delegate:
liste.ForEach(delegate(Test t)
{
  total += t.Nummer;
});

eller lave en delegate sådan her:
liste.ForEach(Sum);

private static void Sum(Test t)
{
  total += t.Nummer;
}
Avatar billede nielle Nybegynder
06. august 2007 - 18:09 #5
Der skal lidt mere med:

static void Main(string[] args)
{
    List<test> testliste = new List<test>();

    testliste.Add(new test(6));
    testliste.Add(new test(13));

    Console.WriteLine(Sum(testliste));
}

static int Sum(List<test> liste)
{
    int total = 0;

    liste.ForEach(
        delegate(test t) { total += t.nummer; }
    );

    return total;
}
Avatar billede netro Nybegynder
06. august 2007 - 20:30 #6
Super. Tak.
Avatar billede hmortensen Nybegynder
07. august 2007 - 15:55 #7
nielle, der er da ingen grund til at lave en ekstra metode (med mindre den skal bruges flere gange, når der laves en anonym delegate.
Avatar billede nielle Nybegynder
07. august 2007 - 16:04 #8
Korrekt, men et eller andet sted skal variablen "total" være defineret. Og det sådan at den er tilgængelig for den anonyme delegate.

Man kan selvfølgeligt sagtens lave det hele i selve Main() funktionen. Efter min mening er dette ikke 100% god programerings-skik da "total" basalt set er en lokal hjælpe-variabel. Andre er velkommen til at have en anden mening. :^)
Avatar billede nielle Nybegynder
23. august 2007 - 08:32 #9
Hvis du ellers har fået løst dit problem formoder jeg at hmortensen skal smide et svar på denne her?
Avatar billede netro Nybegynder
23. august 2007 - 22:06 #10
Det har jeg. I kan bare svare begge.
Avatar billede nielle Nybegynder
23. august 2007 - 22:18 #11
Svar :^)
Avatar billede hmortensen Nybegynder
24. august 2007 - 15:37 #12
Og et svar mere :)
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