C# 如何在C中使用别名类型作为泛型类型参数#
如何将使用C# 如何在C中使用别名类型作为泛型类型参数#,c#,generics,alias,using-directives,C#,Generics,Alias,Using Directives,如何将使用定义的别名类型传递给泛型类 我尝试了以下代码: using ID = Int32; // it might be replaced with `String`. using CC = C<ID>; public class C<T> { T id; } 使用ID=Int32;//它可以替换为“String”。 使用CC=C; 公共C类{ T-id; } 将出现一个错误: 错误CS0246找不到类型或命名空间名称“ID”(是 是否缺少using指令或
定义的别名类型传递给泛型类
我尝试了以下代码:
using ID = Int32; // it might be replaced with `String`.
using CC = C<ID>;
public class C<T> {
T id;
}
使用ID=Int32;//它可以替换为“String”。
使用CC=C;
公共C类{
T-id;
}
将出现一个错误:
错误CS0246找不到类型或命名空间名称“ID”(是
是否缺少using指令或程序集引用?)
但是using指令就在发生错误的行的正上方。
我错过了什么吗?我真的不知道你想用它实现什么,但是你可以用继承做类似的事情
public class CC : C<ID>
{
}
公共类CC:C
{
}
类CC
将派生自具有具体类型的C
。因此,CC.T
将属于Int32
(或任何类型)。不要使用别名
public class C<T> {
T id;
}
公共C类{
T-id;
}
void Foo(){
var x=新的C();
var y=新的C();
}
您想实现什么?目前似乎不可能做到这一点,请在链接副本引用规范时查看第一条注释,有一种方法可以绕过它,在外部命名空间中声明ID
,在内部命名空间中声明CC
。这里的问题是它们在同一个名称空间中。
void Foo() {
var x = new C<Int32>();
var y = new C<string>();
}