文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>c# 集合类:ArrayList,StringCollection,Hashtable,List

c# 集合类:ArrayList,StringCollection,Hashtable,List

时间:2010-10-09  来源:春哥也编程

1.数组集合
其实,在数组的一节里面已经包含了这个概念了。其实数组集合就是 new int[2];
官方参考地址:http://msdn.microsoft.com/zh-cn/library/57yac89c(VS.80).aspx
2.ArrayList
ArrayList跟数组(Array)的区别:http://msdn.microsoft.com/zh-cn/library/41107z8a(VS.80).aspx
实例:

using ...System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace CSharp
...{
    public class TestArrayList
    ...{
        public TestArrayList()
        ...{
            // Create an empty ArrayList, and add some elements.
            ArrayList stringList = new ArrayList();

            stringList.Add("a");
            stringList.Add("abc");
            stringList.Add("abcdef");
            stringList.Add("abcdefg");
            stringList.Add(20);

            // 索引或者说数组下标是数字,所以不需要名字.
            Console.WriteLine("Element ...{0} is \"{1}\"", 2, stringList[2]);

            // 给下标为2的元素赋值
            stringList[2] = "abcd";
            Console.WriteLine("Element ...{0} is \"{1}\"", 2, stringList[2]);

            // 输出stringList的总的元素个素
            Console.WriteLine("Number of elements in the list: ...{0}",
                stringList.Count);

            try
            ...{
                //数组下标从0到count-1,如果尝试输出小于0或者大于等于count的下标,将抛出异常。
                Console.WriteLine("Element ...{0} is \"{1}\"",
                    stringList.Count, stringList[stringList.Count]);
            }
            catch (ArgumentOutOfRangeException aoore)
            ...{
                Console.WriteLine("stringList(...{0}) is out of range(越界).",
                    stringList.Count);
            }

            // 不能使用这种方式来增加元素,只能通过stringList.add("aa")来增加元素
            try
            ...{
                stringList[stringList.Count] = "42";
            }
            catch (ArgumentOutOfRangeException aoore)
            ...{
                Console.WriteLine("stringList(...{0}) is out of range(越界).",
                    stringList.Count);
            }

            Console.WriteLine();
            //用for来循环
            for (int i = 0; i < stringList.Count; i++)
            ...{
                Console.WriteLine("Element ...{0} is \"{1}\"", i,
                    stringList[i]);
            }

            Console.WriteLine();
            //用foreach来循环
            foreach (object o in stringList)
            ...{
                Console.WriteLine(o);
            }

            Console.ReadLine();
        }
    }
}
这里同时要提到StringCollection,其实这个跟ArrayList没啥区别,只不过StringCollection只能接收字符类型的东西。
官方地址:http://msdn.microsoft.com/zh-cn/library/system.collections.specialized.stringcollection(VS.80).aspx

3.List<T> ,这个我想才是我们最常用的。
官方参考地址:http://msdn.microsoft.com/zh-cn/library/6sh2ey19(VS.80).aspx
这个其实就是泛型结合数组的例子。

using ...System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharp
...{
    public class TestList
    ...{
        //默认构造函数
        public TestList()
        ...{
            //声明语法,换句话说就是:定义objAppleList - 集合变量的语法。
            List<Apple> objAppleList = new List<Apple>();

            //定义3个Apple类的实例(也叫对象)
            Apple objApple1 = new Apple();
            objApple1.Color = "red";
            objApple1.Weight = 10;

            Apple objApple2 = new Apple();
            objApple2.Color = "green";
            objApple2.Weight = 12;

            Apple objApple3 = new Apple();
            objApple3.Color = "black";
            objApple3.Weight = 8;

            //把3个Apple类的实例 干到 objAppleList里面去。

            objAppleList.Add(objApple1);
            objAppleList.Add(objApple2);
            objAppleList.Add(objApple3);

            //遍历objAppleList这个集合.
            foreach (Apple o in objAppleList)
            ...{
                Console.WriteLine("Color is ...{0},Weight is {1}", o.Color, o.Weight);
            }

            //总的个数:
            Console.WriteLine("objAppleList的总个数是:...{0}", objAppleList.Count);

            Console.ReadLine();
        }
    }

    public class Apple
    ...{
        //定义字段
        private string _color = "";
        private decimal _weight = 0;

        //定义跟字段对应的属性
        public string Color
        ...{
            get ...{ return _color; }
            set ...{ _color = value; } //这里的value是C#关键字。表示外面传入的值.
        }

        public decimal Weight
        ...{
            get ...{ return _weight; }
            set ...{ _weight = value; }
        }
    }
}

在这里:List<Apple> objAppleList = new List<Apple>();,其实我们用数组也可以,如:Apple[] objAappArray = new Apple[3]; 但是数组的限制就是固定了大小。不能动态增加。
这里为什么不用ArrayList? 按道理,用ArrayList也可以,如:

ArrayList obAppleArrayList = new ArrayList();
            obAppleArrayList.Add(objApple1);
            obAppleArrayList.Add(objApple2);
            obAppleArrayList.Add(objApple2);
我们不用的ArrayList的目的是保证类型安全。因为这个时候,你还可以obAppleArrayList.Add("string");,obAppleArrayList.Add("heihei");,这样obAppleArrayList的元素就不是单纯的Apple类了。
我们最常用的也是List<T>.

4.Hashtable,
官方地址:http://msdn.microsoft.com/zh-cn/library/system.collections.hashtable(VS.80).aspx
实例:

using ...System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace CSharp
...{
    public class TestHashtable
    ...{
        public TestHashtable()
        ...{
            Hashtable objHashtable = new Hashtable();
            
            //需要注意的是:这里的add有点不同于ArrayList,这里需要指定两个值,一个是key,一个value.
            //而且必须都是Object
            objHashtable.Add("Key", "Value");
            objHashtable.Add(1, 2);
            objHashtable.Add(2.1, 3.2);

            //获取所有的key
            ICollection keys = objHashtable.Keys;
            foreach (object key in keys)
            ...{
                Console.WriteLine("Key is ...{0},Values is {1}",key,objHashtable[key]);
            }

            Console.WriteLine();

            //换一种遍历方式:
            foreach (DictionaryEntry de in objHashtable )
            ...{
                Console.WriteLine("Key is ...{0},Values is {1}", de.Key, de.Value);
            }

            Console.ReadLine();
        }
    }
}
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载