博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#中Dictionary的遍历

Posted on 2012-09-08 14:53  阳光梧桐  阅读(867)  评论(0)    收藏  举报

1.Dictionary集合中存储的元素是有序的,集合中的元素是按顺序输出的,这和HashTable是不同的;

2.Dictionary中存储的是强类型的,对所保存的元素做类型约束。

  以下示例演示如何遍历Dictionary中的元素,共分三种情况:

  (1).遍历Dictionary中的Keys;

  (2).遍历Dictionary中的Values;

  (3).遍历Dictionary中的Keys/Values。

    public class AddressDemo
    {
        /// <summary>
        /// 构造函数的重载
        /// </summary>
        public AddressDemo() : this("张三", "地址不详") { }
        public AddressDemo(string name) : this(name, "地址不详") { }
        public AddressDemo(string name, string address)
        {
            this.Name = name;
            this.Address = address;
        }

        //姓名
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        //地址
        private string address;
        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        //显示地址的方法
        public void DisplayAddress()
        {
            string message = string.Format(@"{0} 同学的家庭住址在 {1}",this.Name,this.Address);
            Console.WriteLine(message);
            Console.WriteLine();
        }
    }

 

    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, AddressDemo> address = new Dictionary<string, AddressDemo>();

            AddressDemo zhangSan = new AddressDemo("张三", "深圳市龙华新区");
            AddressDemo liSi = new AddressDemo("李四", "深圳市福田区");

            //往集合中添加对象
            address.Add(zhangSan.Name, zhangSan);
            address.Add(liSi.Name, liSi);

            //获取集合中的元素
            AddressDemo addLiSi = address["李四"];
            addLiSi.DisplayAddress();

            //(1)遍历集合中的Keys
            Console.WriteLine("集合中的Key:");
            foreach (string ad in address.Keys)
            {
                Console.WriteLine(ad);
            }
            Console.WriteLine();

            //(2)遍历集合中的Values
            Console.WriteLine("集合中的Value:");
            foreach (AddressDemo ad in address.Values)
            {
                Console.WriteLine(ad.Name + "\t" + ad.Address);
            }
            Console.WriteLine();

            //(3)遍历集合中的Keys/Values
            Console.WriteLine("集合中的Key/Value:");
            foreach (KeyValuePair<string,AddressDemo> ad in address)
            {
                Console.Write(ad.Key + ":\t");
                Console.WriteLine(ad.Value.Name + "\t" + ad.Value.Address);
            }
        }
    }

运行结果如下: