none
请教动态数组的问题? RRS feed

  • 问题

  • 各位老大新年好。新年的第一个问题。

    我需要用ArrayList来存储二维数组,用ArrayList是因为可以自动增加。

    ArrayList my=new ArrayList()

     能不能my[0][0]这样取元素,
    我需要把工号,姓名存放到第一个元素中。好像ArrayList是一维的。
    怎么实现存二维?
    2010年2月22日 4:35

答案

  • 你可以存储一个结构到arraylist里面

    最简单的办法你把 工号姓名用 - 号分开 然后存入,读取的时候 在稍微处理 分开就好了。


    family as water
    2010年2月22日 4:58
  • 你直接把这些基本信息存贮到一个类中的字段中,然后把类的实例存放到arraylist中

       public class Info
            {
                private string num;
                private string name;
    
                public string Num
                {
                    get
                    { return num; }
                    set { num = value; }
                
                }
    
                public string Name
                {
                    get { return name; }
                    set { name = value; }
                }
            
            }
    
            ArrayList als = new ArrayList();
            private void button4_Click(object sender, EventArgs e)
            {
                als.Clear();
                for (int i = 0; i < 3; i++)
                {
                    Info info = new Info();
                    info.Num = "00"+i.ToString();
                    info.Name = "zhangsan"+i.ToString();
                    als.Add(info);
                }
    
                for (int j = 0; j < als.Count; j++)
                {
                    Info  infos=(Info)als[j];
                    MessageBox.Show(infos.Num+"---"+infos.Name.ToString());
                }
    
            }

    努力+方法=成功
    2010年2月22日 5:22
  • string[,]   test={{"1","A"},{"2","B"}};
    
                List<List< string>> my= new List<List<string>> ();
                for (int i = 0; i <= test.GetUpperBound(0); i++)
                {
                    List<string> tmp=new List<string>(); 
                    for (int j = 0; j <= test.GetUpperBound(1); j++)
                    {
                        tmp.Add(test[i,j]);
                    }
                    my.Add(tmp);
                }
                Console.WriteLine( my[0][1]);

    http://feiyun0112.cnblogs.com/
    2010年2月22日 5:30
    版主
  • 你好!

    这种情况使用 List<T> 更为合适一些。

    如:

    public class MyClass
    {
        public int P1 { get; set; }
        public int P2 { get; set; }

        public MyClass(int p1, int p2)
        {
            this.P1 = p1;
            this.P2 = p2;
        }
    }
    static void Main(string[] args)
    {
        List<MyClass> array = new List<MyClass>();

        array.Add(new MyClass(1, 1));
        int i = array[0].P1;
    }

    知识改变命运,奋斗成就人生!
    2010年2月23日 1:39
    版主

全部回复

  • 你可以存储一个结构到arraylist里面

    最简单的办法你把 工号姓名用 - 号分开 然后存入,读取的时候 在稍微处理 分开就好了。


    family as water
    2010年2月22日 4:58
  • 你直接把这些基本信息存贮到一个类中的字段中,然后把类的实例存放到arraylist中

       public class Info
            {
                private string num;
                private string name;
    
                public string Num
                {
                    get
                    { return num; }
                    set { num = value; }
                
                }
    
                public string Name
                {
                    get { return name; }
                    set { name = value; }
                }
            
            }
    
            ArrayList als = new ArrayList();
            private void button4_Click(object sender, EventArgs e)
            {
                als.Clear();
                for (int i = 0; i < 3; i++)
                {
                    Info info = new Info();
                    info.Num = "00"+i.ToString();
                    info.Name = "zhangsan"+i.ToString();
                    als.Add(info);
                }
    
                for (int j = 0; j < als.Count; j++)
                {
                    Info  infos=(Info)als[j];
                    MessageBox.Show(infos.Num+"---"+infos.Name.ToString());
                }
    
            }

    努力+方法=成功
    2010年2月22日 5:22
  • string[,]   test={{"1","A"},{"2","B"}};
    
                List<List< string>> my= new List<List<string>> ();
                for (int i = 0; i <= test.GetUpperBound(0); i++)
                {
                    List<string> tmp=new List<string>(); 
                    for (int j = 0; j <= test.GetUpperBound(1); j++)
                    {
                        tmp.Add(test[i,j]);
                    }
                    my.Add(tmp);
                }
                Console.WriteLine( my[0][1]);

    http://feiyun0112.cnblogs.com/
    2010年2月22日 5:30
    版主
  • 你好!

    这种情况使用 List<T> 更为合适一些。

    如:

    public class MyClass
    {
        public int P1 { get; set; }
        public int P2 { get; set; }

        public MyClass(int p1, int p2)
        {
            this.P1 = p1;
            this.P2 = p2;
        }
    }
    static void Main(string[] args)
    {
        List<MyClass> array = new List<MyClass>();

        array.Add(new MyClass(1, 1));
        int i = array[0].P1;
    }

    知识改变命运,奋斗成就人生!
    2010年2月23日 1:39
    版主
  • 应该是my[0,0]获取数据
    2010年2月23日 1:50