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(双值);