LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 泛型实例化的5种姿势,你会几种?别只会 new List<string>()

admin
2025年6月22日 10:25 本文热度 100

前言

在 C# 的世界里,泛型就像瑞士军刀一样实用。

无论是集合类 List<T>、字典 Dictionary<TKey, TValue>,还是我们自己写的通用类,泛型都让我们的代码既灵活又安全。

但你有没有想过,当我们写下这样一行代码时:

var list = new List<string>();

背后其实有不止一种“生”它的方法。

换句话说,泛型不是只能靠 new 来创建,还有其他一些有趣的、甚至你可能没见过的方式。

今天我们一起来看看C# 中泛型对象的5种实例化方式,看看你已经掌握了几种,又有几种是今天才第一次见到的!

1. 直接实例化

这是最基本的泛型实例化方式。

类型明确,编译器知道你要的是什么。

所有你能确定类型的时候都可以用这种方式,简单高效。

List<string> stringList = new List<string>();
Dictionary<intstring> dict = new Dictionary<intstring>();

2. 使用 var 关键字

使用 var 可以简化重复书写类型名的麻烦。

实际上仍然是静态类型,只是省去了显式声明。

适用于类型清晰、一眼就能看出的情况下。

一定程度上可以提高代码可读性。

var stringList = new List<string>();
var dict = new Dictionary<intstring>();

3. 使用 default 关键字

虽然 default(T) 并不会调用构造函数,不是真正的“实例化”,但我们可以利用它来创建类型的默认值:

int defaultInt = default(int); // 0
MyClass defaultObj = default(MyClass); // null

4. 通过反射实例化

这种方式常用于运行时动态加载类型。

适用于插件系统、序列化/反序列化等需要延迟绑定的场景。

不过实现上相对比较复杂,但也更加灵活。

Type genericListType = typeof(List<>);
Type concreteListType = genericListType.MakeGenericType(typeof(string));
object listInstance = Activator.CreateInstance(concreteListType);

5. 使用工厂模式

将泛型实例化封装成工厂类,提高复用性和解耦。

可结合缓存机制优化性能。

public static class Factory
{
    public static T Create<T>() where T : new()
    {
        return new T();
    }
}

// 使用
var instance = Factory.Create<MyClass>();

总结

今天我们聊了 C# 中泛型对象的 五种实例化方式

希望它们能帮你打开思路,写出更优雅、更灵活的泛型代码。


该文章在 2025/6/23 9:40:17 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved