C#数据结构揭秘一攻略
C#数据结构是每个C#程序员必须熟练掌握的技能之一。本攻略将介绍常见的C#数据结构,包括数组、列表、栈、队列、散列表和字典。我们将会深入了解它们的特点、使用场景和使用方法,并附带代码示例加深理解。
数组
数组是存储单一类型元素的固定大小的集合结构。在C#中,可以使用以下方式声明和初始化一个数组:
int[] nums1 = new int[5];
int[] nums2 = {1, 2, 3, 4, 5};
在第一种方式中,将会声明一个包含5个元素的空数组。在第二种方式中,将会声明一个包含5个元素的数组,并初始化每个元素。
通过下标访问数组元素十分简单:
Console.WriteLine(nums2[2]); // output: 3
数组的优势在于它的随机访问速度很快,但是在插入和删除操作时,因为需要移动元素位置,可能会带来性能问题。
列表
列表是动态的集合结构,它可以在运行时添加和删除元素。在C#中,列表可以使用以下方法来创建:
List<int> list1 = new List<int>(); // 创建一个空列表
List<int> list2 = new List<int>() {1, 2, 3, 4, 5}; // 创建并初始化一个列表
通过Add()
方法向列表中添加元素:
list1.Add(1);
list1.Add(2);
list1.Add(3);
遍历列表中元素的方式和数组类似:
foreach (var item in list2)
{
Console.WriteLine(item);
}
栈
栈是一种后进先出(LIFO)的数据结构。在C#中,可以使用以下方式创建一个栈:
Stack<int> stack = new Stack<int>(); // 创建一个空栈
使用Push()
方法向栈顶添加元素:
stack.Push(1);
stack.Push(2);
stack.Push(3);
使用Peek()
方法访问栈顶元素:
Console.WriteLine(stack.Peek()); // output: 3
使用Pop()
方法弹出栈顶元素:
Console.WriteLine(stack.Pop()); // output: 3
队列
队列是一种先进先出(FIFO)的数据结构。在C#中,可以使用以下方式创建一个队列:
Queue<int> queue = new Queue<int>(); // 创建一个空队列
使用Enqueue()
方法向队列尾部添加元素:
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
使用Peek()
方法访问队列头部元素:
Console.WriteLine(queue.Peek()); // output: 1
使用Dequeue()
方法弹出队列头部元素:
Console.WriteLine(queue.Dequeue()); // output: 1
散列表
散列表是一种通过散列函数将元素映射到索引的数据结构,通常用于快速查找。在C#中,可以使用以下方式创建一个散列表:
Hashtable hashtable = new Hashtable(); // 创建一个空散列表
使用Add()
方法向散列表添加元素:
hashtable.Add("name", "Tom");
hashtable.Add("age", 18);
hashtable.Add("gender", "male");
使用ContainsKey()
方法判断是否存在指定的键:
Console.WriteLine(hashtable.ContainsKey("name")); // output: True
使用ContainsValue()
方法判断是否存在指定的值:
Console.WriteLine(hashtable.ContainsValue("female")); // output: False
字典
字典是键值对(key-value)的集合结构,在C#中,字典可以使用以下方式创建:
Dictionary<string, string> dict = new Dictionary<string, string>(); // 创建一个空字典
使用Add()
方法添加键值对:
dict.Add("name", "Tom");
dict.Add("age", "18");
dict.Add("gender", "male");
使用ContainsKey()
方法和ContainsValue()
方法检查键值对是否存在:
Console.WriteLine(dict.ContainsKey("name")); // output: True
Console.WriteLine(dict.ContainsValue("female")); // output: False
示例说明
示例1:使用列表存储学生信息
public class Student
{
public string name;
public int age;
public int score;
}
List<Student> students = new List<Student>();
students.Add(new Student() { name = "Tom", age = 18, score = 90});
students.Add(new Student() { name = "Jerry", age = 19, score = 85});
students.Add(new Student() { name = "Bob", age = 20, score = 92});
foreach (var student in students)
{
Console.WriteLine("name:{0}, age:{1}, score:{2}", student.name, student.age, student.score);
}
输出结果:
name:Tom, age:18, score:90
name:Jerry, age:19, score:85
name:Bob, age:20, score:92
示例2:使用字典记录交通工具的速度
Dictionary<string, int> vehicleSpeeds = new Dictionary<string, int>();
vehicleSpeeds.Add("car", 60);
vehicleSpeeds.Add("bus", 40);
vehicleSpeeds.Add("motorbike", 80);
foreach (var vehicle in vehicleSpeeds)
{
Console.WriteLine("Vehicle:{0}, Speed:{1}km/h", vehicle.Key, vehicle.Value);
}
输出结果:
Vehicle:car, Speed:60km/h
Vehicle:bus, Speed:40km/h
Vehicle:motorbike, Speed:80km/h
以上是C#数据结构揭秘一的完整攻略,相信每个C#程序员通过本攻略都可以掌握这些基础数据结构的使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#数据结构揭秘一 - Python技术站