簡體   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