铸造仿制药

本文关键字: | 更新日期: 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
相关文章:
  • 没有找到相关文章