在C#中,可以使用以下命令对别名进行别名:
using Str = System.String;
这是否可以使用依赖于泛型的类,我尝试过类似的方法,但似乎没有编译。
using IE<T> = System.Collections.Generic.IEnumerable<T>;
和
using IE = System.Collections.Generic.IEnumerable;
在C#中使用泛型是否可以实现?如果是这样,我错过了什么?
答案 0 :(得分:10)
这是否可以使用依赖于泛型的类,我尝试过类似的方法,但似乎没有编译。
using IE<T> = System.Collections.Generic.IEnumerable<T>;
不,这是不可能的。唯一有效的是:
using IE = System.Collections.Generic.IEnumerable<string>;
using
声明不能是通用的。
答案 1 :(得分:5)
不,这是不可能的。 C# Language Specification,第5版,第9.4.1节规定:
使用别名可以命名一个封闭的构造类型,但不能命名 未提供类型参数的未绑定泛型类型声明。对于 例如:
namespace N1 { class A<T> { class B {} } } namespace N2 { using W = N1.A; // Error, cannot name unbound generic type using X = N1.A.B; // Error, cannot name unbound generic type using Y = N1.A<int>; // Ok, can name closed constructed type using Z<T> = N1.A<T>; // Error, using alias cannot have type parameters }