新对象与覆盖现有对象

本文关键字:对象 覆盖 新对象 | 更新日期: 2023-09-27 18:18:11

我正在开发一个 c# 程序,但我的问题或多或少是跨语言的。

假设一个类

public class Class1
{
  SlimMath.Vector3 location;
}

这个向量是保存位置,每个逐笔报价直接从数组读取一次。现在我有两种不同的方法来"覆盖"这个向量。

void overwrite()
{
    location = new SlimMath.Vector3(cameraData.loc[0], cameraData.loc[1], cameraData.loc[2]);
}

和(假设向量位置也已初始化(:

void overwrite()
{
   location.X = cameraData.loc[0];
   location.Y = cameraData.loc[1];
   location.Z = cameraData.loc[2];
}

因此,在互联网上搜索我自己的之后,我的问题是:每次阅读输入时,我是否创建一个new SlimMath.Vector3或覆盖已经存在的一个,这是否重要?由于我经常阅读,我想知道,如果涉及到性能,哪种方法更可行。

提前感谢您对此主题的任何帮助。

新对象与覆盖现有对象

更具可读性的方法是使用不可变对象。如果你可以假设对象的属性不会因为你当前没有看的其他代码而改变,那么在脑海中理解阅读代码时会发生什么会更容易。

但是,有时这确实会导致创建大量对象,这有时会降低应用程序的性能。

由于上面的"可以"和"有时"这两个词,通常自己假设代码的这一特定部分肯定会成为性能问题是不好的。

因此,通常您应该首先编写可读且合理的代码,只有在查明特定的性能问题(最好使用探查器来计算执行时间和内存消耗(之后,您才能在这里和那里应用一些"技巧"来修复它。