我有一个ArrayList 名叫 listABC
并定义了一个Struct 名叫 StructABC
将一些StructABC类型的数据插入到了listABC中现在我要查找listABC中是否有某一元素 abc(StructABC类型的)那么可以用listABC.Contains(abc)语句吗?
Contains()针对的是引用还是值?如果不用Contains 那用什么?循环遍历?

解决方案 »

  1.   

                ArrayList arrlist = new ArrayList();            object o1 = 2;
                object o2 = 2;
                arrlist.Add(1);
                arrlist.Add("a");
                arrlist.Add(o1);
                Console.WriteLine(arrlist.Contains(1));   //true
                Console.WriteLine(arrlist.Contains("a")); //true
                Console.WriteLine(arrlist.Contains(o2));  //true
      

  2.   

            struct A
            {
                public Int32 i;
            }        class C
            {
                public String s;
            }
            static void Main(string[] args)
            {
    ArrayList arrlist = new ArrayList();            A a1, a2;
                a1.i = 1;
                a2.i = 1;            C c1 = new C();
                C c2 = new C();
                c1.s = "a";
                c2.s = "a";            arrlist.Add(a1);
                arrlist.Add(c1);
                Console.WriteLine(arrlist.Contains(a2)); //true
                Console.WriteLine(arrlist.Contains(c1)); //true
                Console.WriteLine(arrlist.Contains(c2)); //false
            }
      

  3.   

    如果Sturct里面包含了引用类型的数据  那么是不是就不行了?
      

  4.   

            struct A
            {
                public C c;
            }        class C
            {
                object o = new object();
            }            ArrayList arr = new ArrayList();            A a;
                a.c = new C();            arr.Add(a);            A a1;
                a1.c = new C();            Console.WriteLine(arr.Contains(a1));  //false
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace arraylist
    {
        class Program
        {
            static void Main(string[] args)
            {
                ArrayList arrlist = new ArrayList();
                arrlist.Add("苹果");//增加
                arrlist.Add("香焦");
                arrlist.Add("葡萄");
                foreach (int n in new int[3] { 0, 1, 2 })
                {
                    arrlist.Add(n);
                }
                arrlist.Remove(0);//移除值为0的数
                arrlist.RemoveAt(3);//移除索引为3的数
                arrlist.Insert(1, "apple");//在指定索引处插入数
                for (int i = 0; i < arrlist.Count; i++)
                {
                    Console.WriteLine(arrlist);
                }
                Console.Read();
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace HashtableTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Hashtable student = new Hashtable();
                student.Add("001","Tom");//增加            student.Add("002", "Lily");
                student.Add("003", "Jime");
                student.Add("004", "Lucy");
                foreach (DictionaryEntry element in student)
                {
                    string di =element.Key .ToString ();
                    string name = element .Value .ToString ();
                    Console.WriteLine("学生的ID:{0}  学生的姓名 {1}",di,name );
                }
                student.Remove("003");
                Console.WriteLine("删后遍历队:");
                foreach (DictionaryEntry element in student)
                {
                    string di = element.Key.ToString();
                    string name = element.Value.ToString();
                    Console.WriteLine("学生的ID:{0}  学生的姓名 {1}", di, name);
                }
                Console.Read();
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace queueTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Queue queue = new Queue();
                for (int i = 0; i < 6; i++)
                {
                    queue.Enqueue(i);
                    Console.WriteLine("{0}入队列", i);
                }
                Console.WriteLine("返回队开始的元素{0}", queue.Peek().ToString());
                Console.WriteLine("遍历队:");
                foreach (int n in queue)
                {
                    Console.WriteLine(n );
                }
                while (queue.Count != 0)
                {
                    int q = (int)queue.Dequeue();
                    Console.WriteLine("{0}出队", q);
                }
                Console.Read();
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace SortedListTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                SortedList student = new SortedList();
                student.Add("001","Lucy");
                student.Add("002", "Lily");
                student.Add("003", "Tom");
                student.Add("004", "Jim");
                foreach (DictionaryEntry  n in student)
                {
                    string  id = n.Key.ToString();
                    string  name = n.Value.ToString();
                    Console.WriteLine("学生的ID:{0}  ,学生的姓名: {1}",id ,name );
                }
                student.Remove("003");
                Console.WriteLine("删后的栈");
                foreach (DictionaryEntry n in student)
                {
                    string id = n.Key.ToString();
                    string name = n.Value.ToString();
                    Console.WriteLine("学生的ID:{0}  ,学生的姓名: {1}", id, name);
                }
                Console.Read();
                
            }
        }
    }using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace stacktest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stack stack = new Stack();
                for (int i=0; i < 6; i++)
                {
                    stack.Push(i);
                }
                Console.WriteLine("当前栈顶元素为:{0}",stack .Peek ().ToString());
                Console.WriteLine("移出栈顶元素:{0}",stack .Pop ().ToString() );
                Console.WriteLine("当前栈顶元素为:{0}", stack.Peek().ToString());
                Console.WriteLine("遍历栈");
                foreach (int i in stack)
                {
                    Console.WriteLine(i);
                }
                while (stack.Count != 0)
                {
                    int s = (int)stack.Pop();
                    Console.WriteLine("{0}出栈", s);
                }
                Console.Read ();
            }
        }
    }