吹扫代码未运行,出现错误:“错误CS1503:论据一:无法从'Child1'转换为'Test<bool,object 1.0'“,我正在创建抽象类,它将Same抽象类作为构造函数中的参数。在创建它们的子类并将另一个子类作为参数传递给构造函数后,会产生上述编译错误。尝试ChatGPT它说逻辑代码是正确的,但为什么Visual Studio代码给出编译时错误。
https://learn.microsoft.com/en-us/answers/questions/1379331/compilation-error-cs8625-c
abstract class Test<A, B>
{
private Test<B, object> t1;
public Test(Test<B, object> t)
{
t1 = t;
}
}
class Child1 : Test<int, string>
{
public Child1(Test<string, object> t) : base(t)
{
}
}
class Child2 : Test<string, bool>
{
public Child2(Test<bool, object> t) : base(t)
{
}
}
class Main
{
public void Init()
{
Child2 c2 = new Child2(null);
Child1 c1 = new Child1(c2);
}
}
2条答案
按热度按时间tp5buhyn1#
我在我的本地复制代码如下。
这里是工作样本,它可以帮助您修复它。
lkaoscv72#
这个错误在我看来是正确的。
t1
是Child1
,也就是Test<string, string>
。t2
是Child2
。Child2
的构造函数接受一个Test<bool, object>
t1
无法从Test<string, string>
转换为Test<bool, object>
,因为其指定的类类型不匹配。简单地说,string
不是bool
也许,您希望
Child1
和Child2
子类也是泛型的。