这一部分主要包括:
流程控制语句,数组集合,哈希表
直接上代码:
/*
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容器;对比理解 就比较好懂