c# - 长生命周期对象的结构与类

标签 c# .net class struct

当您需要非常小的对象时,比如包含 2 个 float 属性,并且您将拥有数百万个不会立即被“销毁”的对象,结构是更好的选择还是类?

就像在作为库的 xna 中,有 point3s 等作为结构,但如果您需要长时间保留这些值,它会不会对性能造成威胁?

最佳答案

与大多数关于结构的问题相反,这实际上似乎是对结构的一个很好的使用。如果它包含的数据是值类型,并且您将使用其中的大量数据,那么结构会很有效。

一些提示:

::结构不应大于 16 字节,否则将失去性能优势。

::使结构不可变。这使用法更加清晰。

例子:

public struct Point3D {

   public float X { get; private set; }
   public float Y { get; private set; }
   public float Z { get; private set; }

   public Point3D(float x, float y, float z) {
      X = x;
      Y = y;
      Z = z;
   }

   public Point3D Invert() {
      return new Point3D(-X, -Y, -Z);
   }

}

关于c# - 长生命周期对象的结构与类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608392/

相关文章:

c# - 如何公开 Amazon EC2 实例的进程状态

c# - 在 wpf 中显示用户控件的替代方法

c# - malloc 和 Marshal.AllocHGlobal 之间有什么区别?

c# - 在 .NET CF 中以编程方式在 WiFi 网络之间切换?

c# - 在 MVC3 问题中键入安全的 URL 操作

c# - 为什么没有 Nullable<T>.Equals(T value) 方法?

c++ - block 评论开头的感叹号有什么用?

c# - 如何使用 WebAPI、WCF、SignalR 和后台任务在 MVC Web 应用程序中配置简单的注入(inject)器容器和生活方式

c# - 对有关我的超时类的反馈感兴趣

python - 当尝试设置运行计划时,类立即调用方法。函数没有发生