C#中的枚举
1 | enum Season { Spring, Summer, Fall, Winter}; //声明枚举 |
一般情况下枚举第一个元素对应0,也可显示指定1
enum Season : short { Spring, Summer, Fall, Winter}
枚举的数据类型可以基于8种整数类型
C#中的结构
1 | struct Time |
结构主要实现“值”的概念,对于简单的数据使用结构可以节省开销。
C#中结构和类
- 不能为结构声明无参构造,编译器会自动生成一个,为所有字段赋值;
- 在非默认构造中,必须初始化所有字段;
- 结构中不能声明一个字段时同时进行初始化。
1
2
3
4
5
6//声明一个结构体
struct time
{
}
time t; //C#中不需typedef
构造器初始化
1 | Time now = new Time(); //调用构造 |
Console.WriteLine()自动调用ToString方法
结构复制
1 | Time now = new Time(12, 30); |
前提是右侧的结构字段都初始化了。
C#数组
1 | int[] pins; |
数组的大小不是声明的一部分,数组是引用类型。
在声明一个引用类型的时候,不会马上为对象分配内存,只有在用new关键字创建实例的时候,才会真正分配,所以在声明一个数组变量的时候不需要声明它的大小,只有在实际创建数组的时候才可以指定数组的大小。
foreach语句
1 | int[] pins = {9, 3, 7, 2}; |
foreach语句声明了一个循环变量,自动获取数组中每个元素的值,变量类型必须与数组元素类型相匹配。
复制数组
数组是引用类型,这意味着在复制了一个数组变量得到对同一个数组的两个引用,真实的复制数组需要一个一个赋值。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//for一个一个赋值
int[] pins = {9, 3, 7, 2};
int[] copy = new int[pins.Length];
for(int i = 0;i<copy.Length;i++)
{
copy[i] = pins[i];
}
//CopyTO方法赋值
pins.CoptTo(copy, 0);
//Copy方法复制
Array.Copy(pins, copy, copy.Length);
//Clone方法复制
int[] copy = (int[])pins.Clone();
以上都为浅拷贝
多维数组
1 | int[,] items = new int[4, 6];//声明数组,4行6列 |
集合类
ArrayList//类似链表
1
2
3
4
5
6
7
8
9
10ArrayList number = new ArrayList();
number.Add(1); //添加元素
number.Insert(number.Count-1, 99); //在索引Count-1处插入元素
number.Remove(7); //移除值为7的第一个元素
number.RemoveAt(6); //移除索引为6的元素,即第7个元素
//使用foreach便利当前的11个元素
foreach(int number in numbers)
{
Console.WriteLine(number);
}Quene
1
2
3
4
5
6
7
8
9
10Quene numbers = new Quene();
numbers.Enquene(1); //加入队列
//遍历队列
foreach(int number in numbers)
{
}
//出队队列
number.Dequeue();Stack集合类
1
2
3
4
5
6
7Stack number = new Stack();
numbers.Push(1); //入栈
numbers.Pop(); //出栈
foreach(int number in number)
{
Console.WriteLine(number);
}Hashtable类
1
2
3
4
5
6
7
8
9
10
11Hashtable ages = new Hashtable();
//填充1
ages["asa"] = 44;
//遍历,返回的是DictionaryEntry,它允许通过Key属性和Value属性进行元素访问
foreach(DictionaryEntry element in ages)
{
string name = (string)element.Key;
int age = (int)element.Value;
Console.WriteLine("Name: {0}, Age: {1}", name, age);-
}