c# - 类 VS 引用结构

标签 c# performance class reference struct

我正在使用 C# 编写游戏,因此,我非常关心性能。

我想知道主要区别是什么,如果可能的话,我想知道使用类来传递数据或通过引用传递结构的性能考虑因素。

出于性能原因,我不希望到处复制数据(我假设这里通过 ref 传递比通过 value 传递快得多)。

我知道类总是通过引用传递,而结构是通过值传递,但我在这里讨论的是通过引用传递结构。

我希望传递的数据示例:

    public delegate void PathCompleteDelegate(List<PathFinderNode> path);
public struct PathFinderJob{
    public PathCompleteDelegate callback;
    public Vector3 start, end;
    public PathSize unitSize;
    public BoxCollider boxCollider;
}

在前面的示例中,使用类会有所不同吗?如果是这样,区别是什么?在这个例子中,类会比结构更快吗?为什么?

谢谢。 若昂·卡洛斯

最佳答案

I know that a class is always passed by reference and that a struct is passed by value, but I talking about passing the struct by reference here.

您的想法可能是正确的,但这是不正确的。 C# 中的所有内容均按值传递,除非您使用 ref 关键字。

类实例是引用类型,结构实例是值类型。

按值传递引用类型时,传递的是引用的副本(小)。当您按值传递值类型时,您传递的是整个数据的副本(可能很大)。

Jon Skeet 对所有这一切都有很好的解释 here .

关于c# - 类 VS 引用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9923256/

相关文章:

c# - 为什么在 ZedGraph 中 Y 轴很小?

java - 返回两个数组列表或使用两种不同的方法

java - 创建抽象 Activity 类

c# - 具有与具有新关键字的基类相同接口(interface)的子类

c# - 将文件上传到远程服务器

c# - TryParse 无法正确解析

vba - 创建作为参数传递的类的副本

android - 在 Android 上绘制大量圆圈的最佳方法?

iphone - 使用 CGContextDrawLinearGradient 时如何优化 UITableViewCell 渲染

java - 从外部 Action 监听器访问 Jtextfield