Ці ёсць спосаб зрабіць матэматычнае складанне паміж метадамі?

Я хачу ведаць, калі ёсць спосаб зрабіць матэматычнае складанне паміж метадамі? Код, як паказана ніжэй.

З Main: (мне трэба для вылічэнні, але я не магу зрабіць разлік паміж метадамі)

Ball.setPositionY = Ball.setPositionY + Ball.setSpeedY;

З класа:

public class Ball
    {
    public int speedX { get; set; }
    public int speedY { get; set; }
    public int positionX { get; set; }
    public int positionY { get; set; }

    public Ball(int speedX, int speedY, int positionX, int positionY)
    {
        this.speedX = speedX;
        this.speedY = speedY;
        this.positionX = positionX;
        this.positionY = positionY;
    }

    public void setSpeedX(int newSpeedX)
    {
        speedX = newSpeedX;
    }

    public void setSpeedY(int newSpeedY)
    {
        speedY = newSpeedY;
    }

    public void setPositionX(int newPositionX)
    {
        positionX = newPositionX;
    }

    public void setPositionY(int newPositionY)
    {
        positionY = newPositionY;
    }
}
2
Чаму setSpeedX , і г.д., калі ў вас ужо ёсць сетары нерухомасць? Я думаю, што вы хочаце сказаць, Ball.positionY = Ball.positionY + Ball.speedY , які працуе ў бягучым кодзе.
дададзена аўтар mike z, крыніца
Так, становішча і хуткасць лепш, так як ўласцівасці і ў вашым кодзе, там некаторая надмернасць, што варта пазбягаць
дададзена аўтар Fabio Marcolini, крыніца

7 адказы

Гэта, як вы павінны зрабіць гэта:

public class Ball
{
    public int SpeedX { get; set; }
    public int SpeedY { get; set; }
    public int PositionX { get; set; }
    public int PositionY { get; set; }

    public Ball(int speedX, int speedY, int positionX, int positionY)
    {
        this.SpeedX = speedX;
        this.SpeedY = speedY;
        this.PositionX = positionX;
        this.PositionY = positionY;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        Ball ball1 = new Ball(1,1,1,1);
        Ball ball2 = new Ball(2,2,2,2);
        Ball ball3 = new Ball(3,3,3,3);
        ball3.SpeedX = ball1.SpeedX + ball2.SpeedX;
    }
}
7
дададзена
Калі ўласцівасці з'яўляюцца агульнадаступнымі, не будзе мець сэнс мець канструктар па змаўчанні (ці, па меншай меры, у якасці опцыі)?
дададзена аўтар gunr2171, крыніца

Вашы метады павінны вяртаць значэнне для таго, каб дадаць іх, але грамадскія ўласцівасці робяць тое, што вы хочаце. Ball.positionY = Ball.positionY + Ball.SpeedY;

0
дададзена

Як наконт даючы метад набору таксама вяртае значэнне, якое было зададзена або дадаць метад GET, які дае вам тое ж самае значэнне. Але ... так як вы хочаце, што, чаму б вам не проста выкарыстоўваць агульныя ўласцівасці на аб'екце?

Такім чынам, ваш метад (ы) можа выглядаць

public int setPositionX(int newPositionX)
{
    positionX = newPositionX;
    return newPositionX;
}

Але, так як вы цяпер ствараць свае ўласныя метады атрымання і ўстаноўкі, і ў вас ужо ёсць. Выкарыстоўвайце агульныя ўласцівасці і ўсё павінна быць добра.

0
дададзена
@Baszz вашага несапраўднай павінна быць Int або я нешта прапусціў?
дададзена аўтар WiiMaxx, крыніца
Калі ласка, праверце мой выбар.
дададзена аўтар Bas Slagter, крыніца
Тады Болль, верагодна, не з'яўляецца асобнікам класа Ball. Вы можаце захацець зрабіць уаг шар = новы шар() першы і выкарыстоўваць асобнік (малой) шара для выкліку метаду на.
дададзена аўтар Bas Slagter, крыніца
Што памылка "з'яўляецца тое, што?
дададзена аўтар Bas Slagter, крыніца
setPositionY з'яўляецца функцыяй, а не ўласцівасць. Таму прысваенне яму не ўяўляецца магчымым. Ball.setPositionY (Ball.positionY + Ball.setSpeed) павінны працаваць нармальна.
дададзена аўтар Bas Slagter, крыніца
Вы павінны быць больш канкрэтнымі. Які метад не працуе і што не працуе дакладна?
дададзена аўтар Bas Slagter, крыніца
@WiiMaxx Вы так добра ... мой дрэнны.
дададзена аўтар Bas Slagter, крыніца
@ElaineHarden Гэта даволі проста. калі абодва метаду вы называеце вяртае Int, аператар + павінен працаваць нармальна. Так адзін з гэтых метадаў, верагодна, не робіць гэтага.
дададзена аўтар Bas Slagter, крыніца
@Baszz У вас ёсць якія-небудзь ідэі, як я магу гэта зрабіць?
дададзена аўтар Elaine Harden, крыніца
@Baszz Адзін з метаду не працуе. Як я магу зрабіць?
дададзена аўтар Elaine Harden, крыніца
Так, гэта павінна быць унутр. Але, там памылка ўсё яшчэ там.
дададзена аўтар Elaine Harden, крыніца
@Baszz На жаль пра гэта. Ball.setPositionY = Ball.positionY + Ball.setSpeedY; Ball.positionY не працуе. Памылка спасылка на аб'ект неабходная для не-статычнага поля, метады або ўласцівасці.
дададзена аўтар Elaine Harden, крыніца
Памылка аператар «+» не можа быць прыменена да аперанда тыпу «метад групавой» і «метад групавога».
дададзена аўтар Elaine Harden, крыніца
@Baszz памылка ўсё яшчэ там і тое ж паведамленне.
дададзена аўтар Elaine Harden, крыніца
Я спрабаваў, але памылка ўсё яшчэ там.
дададзена аўтар Elaine Harden, крыніца
@Baszz Дзякуй!
дададзена аўтар Elaine Harden, крыніца
Прывітанне @Baszz, я не разумею. Магчыма вы паказаць мне прыклад?
дададзена аўтар Elaine Harden, крыніца

Вось якія ўласцівасці для; Вы павінны выкарыстоўваць ўласцівасці для гэтага.

Калі вы маеце на ўвазе даданне ў функцыянальным сэнсе праграмавання, я не магу мець ніякага сэнсу вашага прыкладу.

0
дададзена

Пасля прысваення значэння, проста вяртае значэнне. Гэта дазволіць вырашыць вашу праблему. Калі вы хочаце выкарыстоўваць метады.

Для напрыклад.

public int setSpeedX(int newSpeedX)
{
  speedX = newSpeedX;
  return speedX;
}
0
дададзена
Будзьце асцярожныя, каб дакументаваць вяртаюцца значэння функцыі, таму што гэта толькі адзін з двух найбольш распаўсюджаных мадэляў паводзін (іншая істота вяртаючы папярэдняе значэнне).
дададзена аўтар Medinoc, крыніца

паспрабуйце наступны код ...

namespace Foo
{
    class Program
    {
    static void Main(string[] args)
    {
        Ball b = new Ball(1,2,3,4);

        //b.setPositionY() = b.setSpeedY() + b.setSpeedY();
       b.setPositionY(b.setSpeedX() + b.setSpeedY());            

    }
}

public class Ball
{
    public int speedX { get; set; }
    public int speedY { get; set; }
    public int positionX { get; set; }
    public int positionY { get; set; }

    public Ball(int speedX, int speedY, int positionX, int positionY)
    {
        this.speedX = speedX;
        this.speedY = speedY;
        this.positionX = positionX;
        this.positionY = positionY;
    }

    public int setSpeedX()
    {
        //speedX = newSpeedX;
        return 10;
    }

    public int setSpeedY()
    {
        //speedY = newSpeedY;
        return 20;
    }

    public int setPositionX()
    {
        //positionX = newPositionX;
        return 1;
    }

    public void setPositionY(int newPositionY)
    {
        positionY = newPositionY;

    }
}
0
дададзена
Вы толькі вітаць ..;)
дададзена аўтар Shreyos Adikari, крыніца
@Shreyos, дзякуй
дададзена аўтар SeeSharp, крыніца

Паколькі ўсе вашы метады маюць несапраўднай тыпу вяртаецца значэння няма ніякага спосабу, каб «дадаць» іх. Калі вы хочаце зрабіць гэта, змяніць тып звароту вашых метадаў да Int .

<�Моцны> Edit

Вы можаце «дадаць» метады, якія маюць Int тып якое вяртаецца значэння, але вынік не можа быць метадам.

прыклад:

public int setPositionY(int newPositionY)
{
    positionY = newPositionY;
    return positionY;
}

public int setSpeedY(int newSpeedY)
{
    speedY = newSpeedY;
    return speedY;
}

positionY = setPositionY(/*new position*/) + setSpeedY(/*new speed*/);
0
дададзена
Глядзіце маё рэдагаванне. Ва ўсякім выпадку, як і іншыя прапанавалі, правільны спосаб складаецца ў выкарыстанні уласцівасцяў.
дададзена аўтар Spaceman, крыніца
Прывітанне @Spaceman, яна па-ранейшаму запытвае тую ж памылку, што аператар «+» не можа быць ужыты.
дададзена аўтар Elaine Harden, крыніца