我有一个类A
用5构造:“呼叫是下列方法或属性之间暧昧”上子类
- 从
IEnumerable<A>
(例如A(new A[] {A1, A2})
) - 从
A[]
使用params
(快捷方式前一个,例如A(A1, A2)
) - 从
Vector<Complex>
- 从
IEnumerable<Complex>
(转换枚举到向量和调用以前一个,例如。A(new Complex[] {Complex1, Complex2})
) - 从使用
params
(快捷方式之前的一个,例如A(Complex1, Complex2)
)
那与3个具体的构造延伸A
类B
:
- 从
Complex a, Complex b
- 从
double a, double b, double c, double d
- from下方
代码:
Error CS0121 The call is ambiguous between the following methods or properties: 'A.A(params A[])' and 'A.A(params Complex[])'
我想构造为:
public class A
{
public A(params A[] array) : this((IEnumerable<A>)array) { }
public A(IEnumerable<A> enumerable)
{
//
}
public A(params Complex[] array) : this((IEnumerable<Complex>)array) { } // Breaks shit
public A(IEnumerable<Complex> enumerable) : this(Vector<Complex>.Build.DenseOfEnumerable(enumerable)) { }
public A(Vector<Complex> vector)
{
//
}
}
public class B : A
{
public B(Complex a, Complex b)
{
//
}
public B(double a, double b, double c, double d)
{
//
}
public B(double a, double b)
{
//
}
}
完成投入使用构造函数A
,对A
所有三个构造出现以下错误没有继承,父类中的新构造函数如何干扰子类中的构造函数?如何解决这个问题?
,是我用来允许各种等同类型的输入(例如两个A(Complex1, Complex2)
,A(ComplexArray)
和A(ComplexVector)
)好的做法还是应该采取不同的模式?
你说:'在添加与复杂的[]以B'的构造函数,但我没有看到这样的构造函数在'B' 。你的意思是'A'? – CodingYoshi
你是对的,谢谢你的注意。 – lamasticot