泛型 Generics 入门理解
泛型 Generics 是 C# 最重要的特性之一。它让你写一套代码能处理多种类型,同时保持类型安全,避免装箱拆箱的性能开销。没有泛型之前用 ArrayList 存任何类型都是 object,存取时要强制转换。
where 约束是泛型里稍难理解的部分:where T : struct 表示 T 必须是值类型;where T : class 表示引用类型;where T : new() 表示必须有无参构造函数;where T : IComparable 表示必须实现某个接口。多个约束用逗号隔开。
实践体会:泛型方法比重载灵活,但不要为了泛型而泛型。如果一个方法只处理一种类型,就不要加泛型参数。集合类(List<T>、Dictionary)是最常见的泛型应用。
代码示例
// 泛型方法:写一次,多种类型可用
public T Max<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) > 0 ? a : b;
}
// 调用
int m1 = Max(3, 5); // 5
double m2 = Max(1.5, 2.8); // 2.8
// 泛型类
public class Repository<T>
{
private List<T> _items = new();
public void Add(T item) => _items.Add(item);
public T? Get(int index) => _items[index];
}
var repo = new Repository<string>();
repo.Add("hello");
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。