变量
1.无符号
byte ushort uint ulong
2.有符号
sbyte short int long
3.浮点数
float double decimal
4.特殊
char bool string
复杂数据容器
1.枚举 enum
2.结构体 struct
3.数组 (一维、二维、交错) [] [,] [][]
4.类
数据集合
1.ArrayList object数据列表
ArrayList array = new ArrayList();
ArrayList array2= new ArrayList();
//增
array.Add(1);
//范围增加(批量增加 把另一个list容器里的内容加到后面)
array.AddRange(array2);
array.Insert(0, 2);
//删
array.Remove(1);//最前的元素
array.RemoveAt(0);//指定位置的元素
array.Clear();//清空
//查
//得到指定位置元素
Console.WriteLine(array[0]);
//查看元素是否存在
if(array.Contains(1))
{
Console.WriteLine("存在1");
}
//正向查找元素位置
//找到的返回值是位置 找不到 返回-1
int index=array.IndexOf(1);
Console.WriteLine(index);
//反向查找元素位置
//返回是从头开始的索引数
index=array.LastIndexOf(true);
Console.WriteLine(index);
//改
array[0] = "99";
//遍历
//长度
Console.WriteLine(array.Count);
//容量
//避免产生过多垃圾
Console.WriteLine(array.Capacity);
for(int i = 0; i < array.Count; i++)
{
Console.WriteLine(array[i]);
}
foreach(object obj in array)
{
Console.WriteLine(obj);
}
2.Stack 栈 先进后出
Stack stack = new Stack();
//增
//压栈
stack.Push(1);
//取
//栈中不存在删除的概念
//只有取的概念
//弹栈
object v = stack.Pop();//最后进的先出
//查
//1.栈无法查看指定位置的元素
//只能查看栈顶的内容
v = stack.Peek();
Console.WriteLine(v);
//2.查看元素是否存在于栈中
if (stack.Contains(1))
{
Console.WriteLine("存在1");
}
//改
//栈无法改变其中元素 只能压(存)和弹(取)
//实在要改 只有清空
stack.Clear();
//遍历
//长度
Console.WriteLine(stack.Count);
//foreach遍历
foreach (object obj in stack)
{
Console.WriteLine(obj);
}
//将栈转换为object数组
//遍历出来的顺序 也是从栈顶到栈底
object[] array= stack.ToArray();
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
//循环弹栈
while (stack.Count > 0)
{
object o=stack.Pop();
Console.WriteLine(o);
}
3.Queue 队列 先进先出
Queue queue = new Queue();
//增
queue.Enqueue(1);
//取
//队列中不存在删除的概念
//只有取的概念 取出先加入的对象
object v = queue.Dequeue();
//查
//查看队列头部元素但不会移除
v = queue.Peek();
Console.WriteLine(v);
//2.查看元素是否存在于队列中
if (queue.Contains(1))
{
Console.WriteLine("存在1");
}
//改
//队列无法改变其中元素 只能进出队列
//实在要改 只有清空
queue.Clear();
//遍历
//长度
Console.WriteLine(queue.Count);
//foreach遍历
foreach (object obj in queue)
{
Console.WriteLine(obj);
}
//将队列转换为object数组
object[] array= queue.ToArray();
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
//循环出列
while (queue.Count > 0)
{
object o=queue.Dequeue();
Console.WriteLine(o);
}
4.Hashtable 哈希表 键值对
Hashtable hashtable = new Hashtable();
//增
//不能出现相同键
hashtable.Add(1,"123");
//删
//只能通过键去删除
//删除不存在的键 没反应
hashtable.Remove(1);
hashtable.Clear();//清空
//查
//通过键查看值
Console.WriteLine(hashtable[1]);
//2.查看是否存在
//根据键查找
if (hashtable.Contains(1))
{
Console.WriteLine("存在键为1的键值对");
}
if (hashtable.ContainsKey(1))
{
Console.WriteLine("存在键为1的键值对");
}
//根据值查找
if (hashtable.ContainsValue("123"))
{
Console.WriteLine("存在值为123的键值对");
}
//改
//只能改键对于的值内容 无法修改键
hashtable[1] = 100;
//遍历
//得到键值对 对数
Console.WriteLine(hashtable.Count);
//遍历所有键
foreach (object item in hashtable.Keys)
{
Console.WriteLine("键:"+item);
Console.WriteLine("值:" + hashtable[item]);
}
//遍历所有值
foreach (object item in hashtable.Values)
{
Console.WriteLine("值:" + item);
}
//键值对一起遍历
foreach (DictionaryEntry item in hashtable)
{
Console.WriteLine("键:" + item.Key+"值:" + item.Value);
}
//迭代器遍历
IDictionaryEnumerator myEnumerator = hashtable.GetEnumerator();
bool flag =myEnumerator.MoveNext();
while (flag)
{
Console.WriteLine("键:" + myEnumerator.Key + "值:" + myEnumerator.Value);
flag = myEnumerator.MoveNext();
}
ArrayList、Stack、Queue、Hashtable中存储的都是object
由于用万物之父来存储数据,自然存在装箱拆箱。
当往其中进行值类型存储时就是在装箱。
当将值类型对象取出来转换使用时,就存在拆箱.
泛型数据集合
1.List 列表 泛型列表
2.Dictionary 字典 泛型哈希表
3.LinkedList 双向链表
4.Statck 泛型栈
Stack<int> stack = new Stack<int>();增删查改与Stack相同
5.Queue 泛型队列
Queue<int> queue = new Queue<int>();增删查改与Queue相同