我想知道是否有办法在方法之间进行数学加法?代码如下。
从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;
}
}
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
让set方法也返回已设置的值或添加一个为您提供相同值的get方法。但是......既然你想要那个,为什么不在对象上使用公共属性?
所以,你的方法看起来像
public int setPositionX(int newPositionX)
{
positionX = newPositionX;
return newPositionX;
}
但是,既然你现在正在创建自己的getter和setter,那么你已经拥有了它们。使用公共属性,一切都应该没问题。
答案 2 :(得分:0)
分配值后,您只需返回值。它会解决你的问题。如果你想使用方法。
例如。
public int setSpeedX(int newSpeedX)
{
speedX = newSpeedX;
return speedX;
}
答案 3 :(得分:0)
这就是属性的用途;你应该使用那个属性。
如果你的意思是函数式编程意义上的补充,我就不会理解你的例子。
答案 4 :(得分: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*/);
答案 5 :(得分:0)
您的方法必须返回值才能添加它们,但公共属性可以执行您想要的操作。 Ball.positionY = Ball.positionY + Ball.SpeedY;
答案 6 :(得分: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;
}
}