使用Alias = Class;与泛型

时间:2014-02-17 14:35:37

标签: c# generics alias

在C#中,可以使用以下命令对别名进行别名:

using Str = System.String;

这是否可以使用依赖于泛型的类,我尝试过类似的方法,但似乎没有编译。

using IE<T> = System.Collections.Generic.IEnumerable<T>;

using IE = System.Collections.Generic.IEnumerable;

在C#中使用泛型是否可以实现?如果是这样,我错过了什么?

2 个答案:

答案 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
}