C# 从另一个构造函数调用一个典型的构造函数,但给了我一个错误
尝试在同一类中进行常规构造函数到构造函数调用时:C# 从另一个构造函数调用一个典型的构造函数,但给了我一个错误,c#,C#,尝试在同一类中进行常规构造函数到构造函数调用时: public Equation(OrdinaryEquations equation, double xTranslation, double yTranslation, double rotationAngle) : this( (equation == OrdinaryEquations.Second
public Equation(OrdinaryEquations equation,
double xTranslation,
double yTranslation,
double rotationAngle)
: this( (equation == OrdinaryEquations.SecondOrder) ? new EquationFunction(SecondOrderEquation) : new EquationFunction(ThirdOrderEquation),
xTranslation, yTranslation, rotationAngle){}
有序方程是枚举
EquationFunction是一个委托
我得到这个错误:
非静态字段、方法或属性需要对象引用
foreach:“新方程函数(二阶方程)”和“新方程函数(三阶方程)”
这听起来像是当我试图从静态方法访问对象数据时
另一个构造函数符号:
public Equation(EquationFunction equation, double xTranslation, double yTranslation, double rotationAngle){}
这里有我遗漏的东西吗?我不知道该怎么办
p.S我删除了条件运算符并使其成为正常的对象初始化,但给出了相同的错误问题在于构造函数调用中的内联if语句 一般来说,这种类型的对象构造有点代码味道
也许你应该考虑创建一个工厂方法?< /P> < P>我假设“二阶方程”是你的类“等式”中的一个方法名称。 “SecondOrderEquation”的用法指的是这个.SecondOrderEquation,它需要一个类型为“Equation”的实例作为上下文
要解决这个问题,可以尝试将“SecondOrderEquation”和“ThirdOrderEquation”作为静态方法 新方程函数(二阶方程)我不知道二阶方程是什么,但它似乎是一种类型。。你是说typeof(SecondOrderEquation)吗?我不这么认为-第二个构造函数的签名有一个类型为
EquationFunction
的变量作为第一个参数。什么是“SecondOrderEquation”,如“new EquationFunction(SecondOrderEquation)”中的“SecondOrderEquation”?你能给我们EquationFunction的代码吗?SecondOrderEquation是一个方法EquationFunction是一个委托:公共委托双EquationFunction(双值);