铸造仿制药
本文关键字: | 更新日期: 2023-09-27 18:06:56
可能重复:
Unity寄存器中通用参数的多态解析类型
这可能是显而易见的。但有人能告诉我为什么这不是有效的代码吗?编译器表示无法将Class1<string>
转换为Class1<object>
。泛型不允许以这种方式升级吗?如果是,为什么不呢?
namespace Test
{
public class Tests
{
public void Test()
{
Class1<object> objectClass1 = new Class1<string>();
}
}
class Class1<T>
{
}
}
看看
Generics中的协方差和反方差。
Eric Lippert有一系列关于这个主题的博客文章。
String、Int32等是Struct类型,而object、Person等是C#的类对象。因此,在创建泛型时,如果计划使用强制转换功能,则必须指定约束。所以,你可以使用
public void Method<T>() where T : class
or
public void Method<T>() where T : struct