Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将派生类型隐式转换为基泛型类型_C# - Fatal编程技术网

C# 无法将派生类型隐式转换为基泛型类型

C# 无法将派生类型隐式转换为基泛型类型,c#,C#,以下代码未使用编译 错误CS0029:无法将类型“CSConsoleTest.Derived”隐式转换为“T” 这是编译器错误还是原因 public class Base { public Derived Derived; } public class Derived : Base { } class Program { public static void Func<T>(T obj) where T : Base { obj = obj.D

以下代码未使用编译

错误CS0029:无法将类型“CSConsoleTest.Derived”隐式转换为“T”

这是编译器错误还是原因

public class Base
{
    public Derived Derived;
}
public class Derived : Base
{
}
class Program
{
    public static void Func<T>(T obj) where T : Base
    {
        obj = obj.Derived;
    }
}
公共类基
{
公共衍生;
}
派生的公共类:基
{
}
班级计划
{
公共静态无效函数(T obj),其中T:Base
{
obj=派生的obj;
}
}

T
可以是从
T
派生的任何类,但并不总是基类。例如:

public class Derived1 : Base
{
}
public class Derived2 : Base
{
}
T
可以是
Derived1
Derived2
Base

您不能将
Derived1
转换为
Derived2
,这就是编译器拒绝隐式转换的原因

obj = obj.Derived as T; // safe explicit cast.

除此之外,我不建议在基类中包含child类。如果你说出你的想法,也许我们可以给你一条正确的道路。

因此,我编写了调用
Func(a)。你认为现在会发生什么?谢谢。这是一个愚蠢的问题,你的意思可能是T