You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于使用using关键字缩写泛型类型对象定义的疑问

泛型类型的using别名用法解答

嗨,刚接触C#就想到这个问题,说明你对语法细节挺敏感的嘛!其实从C# 7.3版本开始,就支持给泛型类型创建using别名了,完全能实现你想要的类似泛型typedef的效果😎

基本用法示例

直接在文件顶部或者命名空间级别声明泛型别名,写法如下:

// 给泛型Dictionary起个短别名
using MyGenericDict<TKey, TValue> = System.Collections.Generic.Dictionary<TKey, TValue>;

之后你就可以像使用原生泛型类型一样用这个别名创建实例:

// 创建字符串键、整数值的字典
var fruitCount = new MyGenericDict<string, int>();
fruitCount.Add("banana", 3);

// 创建整数键、布尔值的字典
var flagMap = new MyGenericDict<int, bool>();
flagMap.Add(0, false);

带约束的泛型别名

如果你的泛型类型需要参数约束,也可以直接在别名声明里加上,这样使用别名时会自动继承这些约束:

// 给带约束的泛型字典起别名
using MyConstrainedDict<TKey, TValue> = System.Collections.Generic.Dictionary<TKey, TValue>
    where TKey : IComparable<TKey>  // 约束键类型必须实现IComparable
    where TValue : class;           // 约束值类型必须是引用类型

注意事项

  • 泛型别名的声明必须放在文件顶部(任何命名空间之外)或者命名空间内部,不能放在类、方法等成员内部
  • 别名的泛型参数名称可以自定义,不一定和原类型的参数名一致,比如你也可以写成using MyDict<K, V> = System.Collections.Generic.Dictionary<K, V>,只要对应上就行

内容的提问来源于stack exchange,提问作者J. Arrillaga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:11:27