C#中的集合类——HashTable

时间:2022-09-03 18:49:56

HashTable 被称为键值对集合,类似于字典,根据key可以找到value

键值对对象[键]=值;
键值对集合当中,键必须是唯一的,而值是可以重复的

1.  HashTable的用法

            //创建了一个键值对集合对象
            Hashtable ht = new Hashtable();
            ht.Add(1, "张三");
            ht.Add(2, true);
            ht.Add(3, '');
            ht.Add(false, "错误的");
            ht.Add(5, "张三");
            ht[6] = "新来的";//这也是一种添加数据的方式
            ht[1] = "把张三干掉";
            ht.Add("abc", "cba");

            //abc----cba
            if (!ht.ContainsKey("abc"))
            {
                //ht.Add("abc", "哈哈哈");
                ht["abc"] = "哈哈哈";
            }
            else
            {
                Console.WriteLine("已经包含abc这个键!!!");
            }


           // ht.Clear(); //移除集合中所有的元素
            ht.Remove(3);

            foreach (var item in ht.Keys)
            {
                Console.WriteLine("键是-----{0}==============值是{1}", item, ht[item]);
            }
            //在键值对集合中 是根据键去找值的
            //Console.WriteLine(ht[1]);
            //Console.WriteLine(ht[2]);
            //Console.WriteLine(ht[3]);
            //Console.WriteLine(ht[false]);
            //Console.WriteLine("==================================");
            //for (int i = 0; i < ht.Count; i++)
            //{
            //    Console.WriteLine(ht[i]);
            //}

 

2.  foreach循环

  当循环次数巨大的时候,foreach循环的效率远远高于for循环。

  foreach( var item in collection ) { 循环体}

   item : 集合中的每一项元素

   collection :需要遍历的集合

   var : 可以根据值,自动地推断出类型

            var n = 15;
            var n2 = "张三";
            var n3 = 3.14;
            var n4 = 5000m;
            var n5 = true;
            var n6 = '';
            Console.WriteLine(n.GetType());
            Console.WriteLine(n2.GetType());
            Console.WriteLine(n3.GetType());
            Console.WriteLine(n4.GetType());
            Console.WriteLine(n5.GetType());
            Console.WriteLine(n6.GetType());
            Console.ReadKey();

  输出:

 C#中的集合类——HashTable

  既然var可以通吃以上的类型,为何在C#中它却不受欢迎?

   因为在使用var这个关键字来定义变量的时候,必须在声明变量的时候为变量赋值,否则编译器将报错。

   有时候,我们需要这样做。  string str;  str = "1230";

      这就是var做不到的地方。

3. 强类型语言 和 弱类型语言

  c#是一门强类型语言:在代码当中,必须对每一个变量的类型有一个明确的定义

  其他强类型语言: java、C++等

      弱类型语言:lua、vb、javaScript等