C#入门记录06

这一部分主要包括:

流程控制语句,数组集合,哈希表

直接上代码:

/*
 2020年3月5日15:41:03
 流程控制语句
 数组和集合
*/

using System;
using LoopTest;
using Array2;
using System.Collections;       //包含ArrayList
using HaXi;

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            //TestForeach.testfunc();
            TestHashFunc();

            Console.ReadKey();
            //Console.WriteLine("Hello World!");
        }

        static void TestArrayFunc()
        {
            TestArray.testfunc();

            TestArray.testArray();

            TestArray.testArrayList();
        }

        static void TestHashFunc()
        {
            TestHash hash = new TestHash();

            //hashtable 元素的添加
            hash.test01();

        }
    }
}

namespace LoopTest
{
    class TestForeach
    {
        public static void testfunc()
        {
            string[] strList = { "1", "2", "s", "sadfasdf", "45354" };
            
            //类似C++中的 for(auto xx : arry) 
            foreach(string output in strList)   //foreach(类型 名 in 容器)
            {
                Console.WriteLine(output);
            }

        }
    }
}

//二维数组
namespace Array2
{
    class TestArray
    {
        public static void testfunc()
        {
            //测试二维数组的使用
            int[,] arr = new int[2, 2] { {1,2}, {3,4} };
            Console.Write("数组的行数为:");
            Console.Write(arr.Rank);
            Console.Write("\n");

            Console.Write("数组的列数为:");
            Console.Write(arr.GetUpperBound(arr.Rank - 1) + 1);
            Console.Write("\n");

            int raw = arr.Rank;
            int col = arr.GetUpperBound(arr.Rank - 1) + 1;

            for (int i=0; i<raw; i++)
            {
                string str = "";
                for (int j=0; j<col; j++)
                {
                    str = str + Convert.ToString(arr[i, j]) + " ";
                }
                Console.Write(str);
                Console.Write("\n");
            }

        }

        public static void testArray()
        {
            int[] arr = new int[] { 1, 3, 4, 5, 6, 7, 8, 9, 54 };
            Array.Sort(arr);    //只能对一维数组进行排序
            foreach (int num in arr)
                Console.Write(num.ToString() + " ");

            Console.WriteLine();
            //逆序
            Array.Reverse(arr);
            foreach (int num in arr)
                Console.Write(num.ToString() + " ");

        }

        public static void testArrayList()
        {
            //使用ArrayList

            //Step1 给ArrayList增加元素
            ArrayList list = new ArrayList();
            list.Add(1);
            list.Add(12);
            list.Add(13);
            list.Add(14);
            foreach (int num in list)
                Console.Write(num.ToString() + " ");

            //Step2 元素的删除
            int[] arr = new int[] { 11, 21, 31, 4, 5, 6 };
            ArrayList list2 = new ArrayList(arr);
            Console.WriteLine("输出初始化的数据:");
            foreach (int num in list)
            {
                Console.Write(num.ToString() + " ");
            }

            Console.WriteLine("输出删除后的数据:");
            //list2.Clear();
            if (list2.Count == 0)
            {
                Console.WriteLine("list输出为空");
            }
            else
            {
                Console.WriteLine("输出不为空");
            }

            //移除某个元素(匹配项)
            list2.Remove(3);    //移除list中的元素(匹配项) 就是找到元素为3的选项 然后删除
            Console.WriteLine("使用Remove后的数据:");
            foreach (int num in list2)
            {
                Console.Write(num.ToString() + " ");
            }

            //移除某个元素(索引)
            list2.RemoveAt(3);    //移除list中的元素(下标)
            Console.WriteLine("使用Remove后的数据:");
            foreach (int num in list2)
            {
                Console.Write(num.ToString() + " ");
            }

            //使用removerang移除某一个范围的数据 第一个参数【下标】 第二个参数【个数】
            //list2.RemoveRange(0, list2.Count);
            int count = list2.Count;
            Console.WriteLine("使用Remove后的数据:{0}",count);
            if (list2.Count == 0)
            {
                Console.WriteLine("list输出为空");
            }

            //判断某个指定的元素是否存在  使用contains
            Console.Write("找出包含在list2中的某一个元素并输出:{0}", list2.Contains(21));

        }

    }
}

namespace HaXi
{
    class TestHash
    {
        public void test01()
        {
            //测试hashtable元素的添加 类似C++中的map 也是键值对的形式
            Hashtable hashtable = new Hashtable();
            hashtable.Add("id", "001230");
            hashtable.Add("Name", "JamesWu");
            hashtable.Add("sex", "男");
            Console.Write("\t" + hashtable.Count.ToString() + "\n");

            //clear方法 移除所有的元素
            //hashtable.Clear();

            //Remove方法 移除带有指定键值的元素 然后遍历出来   DictionaryEntry表示的类型 类似于C++中的pair 不过这个表示hashmap中的一个元素
            hashtable.Remove("sex");
            foreach(DictionaryEntry temp in hashtable)
            {
                Console.WriteLine(temp.Key + "\t" + temp.Value);
            }

            //元素的查找 使用Contains方法 进行数据的查找 包含则返回ture 否则为 false
            Console.WriteLine(hashtable.Contains("Name"));
            Console.WriteLine(hashtable.ContainsKey("id")); //通过key进行查找 和上一个函数功能相同
            Console.WriteLine(hashtable.ContainsValue("JamesWu")); //通过value进行查找



        }
    }
}

感觉C#的二维数据没有C/C++的操作直接,有点难懂~ 哈希表就是C++中的map了 这个比较好动 arrlist有点类似vector容器;对比理解 就比较好懂

猜你喜欢

转载自blog.csdn.net/Wuzm_/article/details/104812560