阅读量:0
在C#中,泛型编程是一种编程范式,它允许程序员编写可重用、可扩展的代码。泛型允许程序员创建能够处理不同类型数据的类、接口和方法,而无需为每种数据类型编写单独的代码。泛型编程通过类型参数来实现,这些类型参数可以在类、接口和方法的定义中使用。
以下是使用C#泛型编程实现的一个简单示例:
- 定义一个泛型接口:
public interface IStack<T> { void Push(T item); T Pop(); bool IsEmpty(); }
在这个例子中,IStack<T>
是一个泛型接口,它表示一个栈数据结构。T
是一个类型参数,表示栈中存储的元素类型。
- 实现泛型接口:
public class Stack<T> : IStack<T> { private List<T> _items = new List<T>(); public void Push(T item) { _items.Add(item); } public T Pop() { if (IsEmpty()) { throw new InvalidOperationException("Stack is empty."); } T item = _items[_items.Count - 1]; _items.RemoveAt(_items.Count - 1); return item; } public bool IsEmpty() { return !_items.Any(); } }
在这个例子中,Stack<T>
是一个泛型类,它实现了 IStack<T>
接口。_items
是一个类型为 List<T>
的私有字段,用于存储栈中的元素。
- 使用泛型类:
public class Program { public static void Main() { IStack<int> intStack = new Stack<int>(); intStack.Push(1); intStack.Push(2); intStack.Push(3); Console.WriteLine("Int stack:"); while (!intStack.IsEmpty()) { Console.WriteLine(intStack.Pop()); } IStack<string> stringStack = new Stack<string>(); stringStack.Push("A"); stringStack.Push("B"); stringStack.Push("C"); Console.WriteLine("\nString stack:"); while (!stringStack.IsEmpty()) { Console.WriteLine(stringStack.Pop()); } } }
在这个例子中,我们创建了两个不同类型的栈:一个用于存储整数,另一个用于存储字符串。通过使用泛型类 Stack<T>
,我们可以轻松地实现这一目标,而无需为每种数据类型编写单独的代码。