(在下面的代码中,player
是一个包含名为 Vector
的 Vector2
的类型)
Vector2 v = player.Vector;
v.X -= player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
player.Vector = v;
对比
player.Vector = new Vector2(player.Vector.X - player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds, player.Vector.Y);
它们都完成相同的任务(解决“无法修改返回值,因为它不是变量”错误),但其中一个比另一个更有效吗?
使用的内存是否较少? (无权利?) 执行速度更快吗? 有更好的办法吗?
最佳答案
第二个选项更好,因为它不会改变任何对象。为了提高可读性,我会提取这样的变量:
var x = player.Vector.X - player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
player.Vector = new Vector2(x, player.Vector.Y);
关于c# - 击败值(value)传递的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21566932/