铸造仿制药

时间:2011-08-26 13:31:20

标签: c# generics casting

  

可能重复:
  polymorphic resolution of generic parameters in Unity registerType

这可能是显而易见的。但有人可以告诉我为什么这不是有效的代码? 编译器说它无法将Class1<string>转换为Class1<object>。 仿制药不允许这种方式上转吗?如果是这样,为什么不呢?

namespace Test
{
    public class Tests
    {
        public void Test()
        {            
            Class1<object> objectClass1 = new Class1<string>();
        }
    }
    class Class1<T>
    {
    }
}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:-5)

String,Int32等是Struct类型,而object,Person等是C#的类对象。 因此,在创建泛型时,如果计划使用强制转换要素,则必须指定约束。 所以,你可以使用

public void Method<T>() where T : class
or
public void Method<T>() where T : struct
相关问题