Avatar billede decrypto Nybegynder
20. september 2006 - 08:20 Der er 5 kommentarer og
1 løsning

Forsøger at fjerne et object fra en Generic liste af objekter

Jeg har allerede et objekt som jeg har læst fra et andet sted. Jeg forsøger at få fjernet objektet i min generic collection, men det virker ikke.

Mit objekt "shortAddress" er sat et andet sted og indeholder værdier. Dette objekt vil jeg gerne have fjernet fra min collection.

Jeg forsøger følgende:
-------------------------------------

List<ShortAddress> shortAddressList = GetSavedAddresses();

// Remove object
shortAddressList.Remove(shortAddress); //<- Bør den ikke fjerne mit objekt fra listen?
Avatar billede nielle Nybegynder
20. september 2006 - 08:43 #1
Remove() fjerner et objekt fra listen hvis det er det *samme* objekt som det der blev puttet i den. Du kan ikke oprette et ny objekt, med de samme værdier, og så fjerne dette fra listen.
Avatar billede nielle Nybegynder
20. september 2006 - 08:48 #2
class Program
    {
        static void Main(string[] args)
        {
            List<ShortAddress> shortAddressList = new List<ShortAddress>();

            // VIRKER

            // Tilføjer, og fjerner det samme objekt.
            ShortAddress x = new ShortAddress("aaa");

            shortAddressList.Add(x);
            Console.WriteLine(shortAddressList.Count);

            shortAddressList.Remove(x);
            Console.WriteLine(shortAddressList.Count);

            // VIRKER IKKE

            // Tilføjer et objekt
            ShortAddress y = new ShortAddress("bbb");

            shortAddressList.Add(y);
            Console.WriteLine(shortAddressList.Count);

            ShortAddress y2 = new ShortAddress("bbb");

            shortAddressList.Remove(y2);  // Fjerner ikke y
            Console.WriteLine(shortAddressList.Count);
        }
    }

    class ShortAddress
    {
        string værdi;

        public ShortAddress(string værdi)
        {
            this.værdi = værdi;
        }
    }
Avatar billede decrypto Nybegynder
20. september 2006 - 12:11 #3
OK
Avatar billede decrypto Nybegynder
20. september 2006 - 12:11 #4
Jeg har fået ordnet det på en anden måde. Send du bare et svar ind :-)
Avatar billede nielle Nybegynder
20. september 2006 - 18:21 #5
Svar :^)
Avatar billede arne_v Ekspert
21. september 2006 - 01:15 #6
re 08:43:44>

using System;
using System.Collections.Generic;

namespace E
{
    public class A
    {
        private string s;
        public A(string s)
        {
            this.s = s;
        }
    }
    public class B
    {
        private string s;
        public B(string s)
        {
            this.s = s;
        }
        public override bool Equals(object o)
        {
            if(o is B)
            {
                return s.Equals(((B)o).s);
            }
            else
            {
                return false;
            }
        }
        public override int GetHashCode()
        {
            return s.GetHashCode();
        }
    }
    public class MainClass
    {
        public static void Main(string[] args)
        {
            List<A> la = new List<A>();
            A a = new A("x");
            la.Add(a);
            la.Add(new A("y"));
            Console.WriteLine(la.Remove(a));
            Console.WriteLine(la.Remove(new A("y")));
            List<B> lb = new List<B>();
            B b = new B("x");
            lb.Add(b);
            lb.Add(new B("y"));
            Console.WriteLine(lb.Remove(b));
            Console.WriteLine(lb.Remove(new B("y")));
        }
    }
}
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