C# 泛型(Generic)学习笔记

本文主要介绍 C# 中的泛型(Generic)概念及其使用方法。

什么是泛型?

C# 泛型是一种将类型参数化的编程技术,它可以让我们在编写代码时不用预先指定具体的类型,而是在使用时再传入类型。通过使用泛型,我们可以编写出更加通用、高效、可重用的代码。

泛型的优点

泛型的优点包括:

  • 代码可重用性高,因为泛型可以适应多种数据类型;
  • 类型安全性高,因为编译器会在编译时检查类型;
  • 性能好,因为泛型能够避免装箱和拆箱的开销。

泛型的语法

泛型的语法格式如下:

csharpCopy Code
class MyClass<T> { // ... }

其中,T 是类型参数,可以在类、结构体、接口、方法中使用。

泛型的实例

以下是一个泛型类的示例:

csharpCopy Code
class Stack<T> { private T[] elements; private int index = 0; public Stack(int size) { elements = new T[size]; } public void Push(T item) { if (index >= elements.Length) throw new StackOverflowException(); elements[index] = item; index++; } public T Pop() { if (index <= 0) throw new InvalidOperationException(); index--; T result = elements[index]; elements[index] = default(T); return result; } }

上述代码定义了一个泛型类 Stack,它可以用于存储任意类型的元素。在 Push 和 Pop 方法中使用了泛型类型参数 T,以便能够处理不同的数据类型。

我们可以使用以下代码创建一个 Stack 类型的对象,并向其中添加和删除元素:

csharpCopy Code
Stack<int> intStack = new Stack<int>(10); intStack.Push(1); intStack.Push(2); intStack.Push(3); Console.WriteLine(intStack.Pop()); // 输出 3 Console.WriteLine(intStack.Pop()); // 输出 2 Console.WriteLine(intStack.Pop()); // 输出 1

该代码创建了一个 Stack<int> 对象并向其中添加了三个整型元素,然后按照先进后出的顺序将它们删除并输出。

总结

泛型是 C# 中非常强大和实用的特性,它可以提高代码的重用性、类型安全性和性能。掌握泛型的使用方法,能够让我们写出更加通用、高效的程序。