在C#中,泛型允许我们定义类、接口、方法时指定类型参数,这些类型参数在类、接口、方法被实例化时会被具体的类型所替换。使用泛型可以提高代码的重用性、类型安全和性能。
下面我将为你展示如何在C#中使用泛型来创建一个简单的线性链表(LinkedList)结构。这个链表将包含节点,每个节点存储一个泛型类型的值,并指向列表中的下一个节点。
using System;
// 定义链表节点
public class LinkedListNode<T>
{
public T Value { get; set; }
public LinkedListNode<T> Next { get; set; }
public LinkedListNode(T value)
{
Value = value;
Next = null;
}
public LinkedListNode(T value, LinkedListNode<T> next)
{
Value = value;
Next = next;
}
}
// 定义链表
public class LinkedList<T>
{
public LinkedListNode<T> Head { get; private set; }
public LinkedList()
{
Head = null;
}
// 在链表末尾添加节点
public void Add(T value)
{
var newNode = new LinkedListNode<T>(value);
if (Head == null)
{
Head = newNode;
}
else
{
var current = Head;
while (current.Next != null)
{
current = current.Next;
}
current.Next = newNode;
}
}
// 打印链表(为了演示,这里使用了简单的迭代方式)
public void Print()
{
var current = Head;
while (current != null)
{
Console.Write(current.Value + " -> ");
current = current.Next;
}
Console.WriteLine("null");
}
}
// 示例使用
class Program
{
static void Main(string[] args)
{
var linkedList = new LinkedList<int>();
linkedList.Add(1);
linkedList.Add(2);
linkedList.Add(3);
linkedList.Print(); // 输出: 1 -> 2 -> 3 -> null
}
}
上面的代码中,我们首先定义了一个泛型节点类`LinkedListNode
请注意,这里为了简化示例,`Print`方法直接在控制台上输出了链表的内容。在实际应用中,你可能需要根据具体需求来实现更复杂的操作。