繁体   English   中英

来自另一个构造函数的典型调用构造函数,但给我一个错误

[英]A typical calling constructor from another constructor, but gives me an error

在尝试使常规构造函数在同一类中进行构造函数调用时:

    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:“尝试访问对象数据时听起来像“ new EquationFunction(SecondOrderEquation)”和“ new EquationFunction(ThirdOrderEquation)”从静态方法

另一个构造器信号。

public Equation(EquationFunction equation, double xTranslation, double yTranslation, double rotationAngle){}

我在这里想念什么吗? 我不知道该怎么办!

PS我删除了条件运算符,并使其成为普通的对象初始化,但给出了相同的错误

我假设“ SecondOrderEquation”是您的类“ Equation”中的方法名称。 “ SecondOrderEquation”的用法是指this.SecondOrderEquation,它需要类型为“ Equation”的实例作为上下文。

要解决此问题,您可以尝试使“ SecondOrderEquation”和“ ThirdOrderEquation”成为静态方法。

问题是构造函数调用中的内联if语句。

一般来说,这种类型的对象构造有点代码味道。

也许您应该考虑创建一个工厂方法呢?

新的EquationFunction(SecondOrderEquation)

我不知道SecondOrderEquation是什么,但是它似乎是一个类型。您是说typeof(SecondOrderEquation)吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM