2

メソッド間で数学的加算を行う方法があるかどうか知りたいですか? コードは以下の通りです。

メインから:(計算が必要ですが、メソッド間の計算はできません)

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;
    }
}
4

7 に答える 7

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;
    }
}
于 2013-05-28T08:18:25.723 に答える
0

set メソッドも設定された値を返すようにするか、同じ値を与える get メソッドを追加するのはどうですか。しかし...それが必要な場合は、オブジェクトのパブリック プロパティを使用してみませんか?

したがって、メソッドは次のようになります

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

ただし、独自のゲッターとセッターを作成しているため、既にそれらを持っています。パブリック プロパティを使用すれば、すべてうまくいくはずです。

于 2013-05-28T08:14:38.333 に答える
0

値を割り当てた後、値を返すだけです。それはあなたの問題を解決します。メソッドを使用する場合。

たとえば。

public int setSpeedX(int newSpeedX)
{
  speedX = newSpeedX;
  return speedX;
}
于 2013-05-28T08:15:15.663 に答える
0

それがプロパティの目的です。そのためにプロパティを使用する必要があります。

関数型プログラミングの意味での追加を意味する場合、私はあなたの例を理解できません。

于 2013-05-28T08:15:20.850 に答える
0

以下のコードを試してください...

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;

    }
}
于 2013-05-28T08:27:54.593 に答える
0

メソッドを追加するには値を返す必要がありますが、パブリック プロパティは必要な処理を行います。Ball.positionY =Ball.positionY + Ball.SpeedY;

于 2013-05-28T08:18:32.897 に答える
0

すべてのメソッドにはvoid戻り値の型があるため、それらを「追加」する方法はありません。それをしたい場合は、メソッドの戻り値の型を に変更してくださいint

編集

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*/);
于 2013-05-28T08:16:14.077 に答える