以最佳方式击败价值传递

时间:2014-02-05 01:25:02

标签: c# vector xna pass-by-value

(在以下代码中,player是一种包含名为Vector2的{​​{1}}

的类型
Vector

VS

Vector2 v = player.Vector;
v.X -= player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
player.Vector = v;

这两个都完成了同样的任务(绕过“不能修改返回值,因为它不是一个变量”错误),但是比另一个更有效吗?

是否使用较少的内存? (没有权利?) 一个人执行得更快吗? 还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

第二个选项更好,因为它不会改变任何对象。为了提高可读性,我将提取一个如下变量:

var x = player.Vector.X - player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
player.Vector = new Vector2(x, player.Vector.Y);