ArrayList arr1 = new ArrayList();       
    object item = new object();             
    item = "hello";                         
    arr1.Add(item);                         
    item = 1;                               
    arr1.Add(item);                         
    int[] arr2 = new int[] { 1, 2, 3 };     
    arr1.Insert(1, arr2);
请问如何输出arr1的值(hello,1,2,3,1)?

解决方案 »

  1.   

    public Form1()
            {
                InitializeComponent();            ArrayList arr1 = new ArrayList();
                object item = new object();
                item = "hello";
                arr1.Add(item);
                item = 1;
                arr1.Add(item);
                int[] arr2 = new int[] { 1, 2, 3 };
                arr1.Insert(1, arr2);            List<string> list = new List<string>();            Process(list, arr1.ToArray());
                string s = string.Join(",", list.ToArray());        }        private void Process(List<string> list, object obj)
            {
                if (obj is Array)
                {
                    foreach (var item in (Array)obj)
                    {
                        Process(list, item);
                    }
                }
                else
                {
                    list.Add(obj.ToString());
                }
            }
      

  2.   

    因为 C# 的强型态(强型别)
    现在加到 ArrayList 裹的东西,包括 object (string) 和 int[]
    所以这应该已经是比较简单的方法了~如果要"呼叫"更简单 那可能另外写 extension method
    那只是呼叫端简单而已,基本原理应该都差不多吧~
      

  3.   


    static void Main(string[] args)
            {
                ArrayList arr1 = new ArrayList();
                object item = new object();
                item = "hello";
                arr1.Add(item);
                item = 1;
                arr1.Add(item);
                int[] arr2 = new int[] { 1, 2, 3 };
                arr1.Insert(1, arr2);            Print(arr1);
                Console.Read();
            }        public static void Print(IEnumerable myList)
            {
                foreach (Object obj in myList)
                {
                    if (obj is int[])
                    {
                        foreach (int item in (int[])obj)
                        {
                            Console.Write(" {0}", item);
                        }
                    }
                    else
                    {
                        Console.Write(" {0}", obj);
                    }
                }
            }