c# - 击败值(value)传递的最佳方式

标签 c# vector xna pass-by-value

(在下面的代码中,player 是一个包含名为 VectorVector2 的类型)

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/

相关文章:

c# - 概念检查器 : Collision situations in Farseer

c# - 通过关系(外键)更新其他列值SQLite

c# - 将指定项目从枚举转换为列表?

c# - 具有重复键和值的 .NET 集合?

c++ - 从 vector 中删除对象内存的最佳方法

python - 在 Numpy 上优化向量归一化

visual-studio - XNA 框架导入器

c# - 定义数组内容的更优雅的方式

c# - 将集合项目设置为只读

arrays - 使用 Rust 如何将二维数组转换为二维向量?