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

时间:2009-12-22 12:46:15

标签: c#

尝试在同一个类中构造一个常规构造函数来构造函数:

    public Equation(OrdinaryEquations equation, 
                    double xTranslation,
                    double yTranslation, 
                    double rotationAngle)
      : this( (equation == OrdinaryEquations.SecondOrder) ? new EquationFunction(SecondOrderEquation) : new EquationFunction(ThirdOrderEquation), 
        xTranslation, yTranslation, rotationAngle){}

OrdinaryEquations是枚举

EquationFunction是一个委托

我收到此错误: “非静态字段,方法或属性需要对象引用” foreach:“new EquationFunction(SecondOrderEquation)”和“new EquationFunction(ThirdOrderEquation)” 这听起来像我尝试从静态方法

访问对象数据

另一个构造函数sig。 :

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

这里有什么我想念的吗?我无法弄清楚该做什么!!

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

3 个答案:

答案 0 :(得分:5)

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

要修复它,您可以尝试将“SecondOrderEquation”和“ThirdOrderEquation”设置为静态方法。

答案 1 :(得分:1)

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

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

也许您应该考虑改为创建工厂方法?

答案 2 :(得分:0)

  

new EquationFunction(SecondOrderEquation)

我不知道SecondOrderEquation是什么,但它似乎是一个类型..你的意思是typeof(SecondOrderEquation)?