C#怎么使用泛型 C#泛型类与泛型方法定义

php中文网
发布: 2025-12-13 11:39:28
原创
140人浏览过
泛型是C#中提升代码复用性、类型安全性和性能的重要机制,支持泛型类、泛型方法、约束(where)、泛型委托及常用泛型类型。

c#怎么使用泛型 c#泛型类与泛型方法定义

泛型是 C# 中提升代码复用性、类型安全性和性能的重要机制。它让你写一次逻辑,适配多种类型,避免装箱/拆箱,也省去强制类型转换的麻烦。

泛型类:用 T 占位,运行时确定真实类型

泛型类在定义时用类型参数(如 T)代替具体类型,实例化时再指定实际类型。

基本语法:

class Stack
{
  private List _items = new();

  public void Push(T item) => _items.Add(item);

  public T Pop()
  {
    if (_items.Count == 0) throw new InvalidOperationException();
    var last = _items[^1];
    _items.RemoveAt(_items.Count - 1);
    return last;
  }
}

使用方式:

  • var intStack = new Stack<int>(); intStack.Push(42);</int>
  • var strStack = new Stack<string>(); strStack.Push("hello");</string>

注意:同一个泛型类的不同类型实参(如 Stack<int></int>Stack<string></string>)在运行时是完全不同的类型,互不兼容。

泛型方法:方法自己带类型参数,更灵活

泛型方法把类型参数写在方法名后,可独立于所在类是否泛型。编译器常能自动推断类型,调用时可省略尖括号。

示例:

Napkin AI
Napkin AI

Napkin AI 可以将您的文本转换为图表、流程图、信息图、思维导图视觉效果,以便快速有效地分享您的想法。

Napkin AI 2238
查看详情 Napkin AI
static T GetFirst(IList list)
{
  if (list == null || list.Count == 0) throw new ArgumentException();
  return list[0];
}

// 调用方式(两种都行):
int first = GetFirst(new[] { 1, 2, 3 }); // 自动推断 T 为 int
string s = GetFirst(new[] { "a", "b" }); // 显式指定

常用约束(where):给泛型加规则

有时你需要对 T 做限制,比如要求它有无参构造函数、实现某个接口或继承某个类。这时用 where 子句:

  • class Repository<t> where T : class, IEntity, new()</t> → T 必须是引用类型、实现 IEntity、且有 public 无参构造函数
  • void Process<t>(T value) where T : IComparable<t></t></t> → T 必须支持自身比较
  • where T : struct → 限定为值类型(如 int、DateTime)

约束让泛型更安全,也让你能在方法体内放心调用 T 的成员。

泛型委托与常见泛型类型

C# 内置大量泛型类型和委托,直接拿来就用:

  • 集合:List<t></t>Dictionary<k></k>Queue<t></t>HashSet<t></t>
  • 委托:Action<t></t>Func<tresult></tresult>Func<t tresult></t>Predicate<t></t>
  • 接口:IEnumerable<t></t>IComparable<t></t>IEqualityComparer<t></t>

它们都是泛型设计的最佳实践样本,读源码或文档时多留意其泛型结构,有助于你写出更地道的泛型代码。

基本上就这些。泛型不复杂,但容易忽略约束和推断细节。写的时候想清楚“这个类型需要做什么”,再选合适的约束,代码会更健壮也更易读。

以上就是C#怎么使用泛型 C#泛型类与泛型方法定义的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号