【问题标题】:Is it better to put multiple numbers in multiple int vars or in one int[] array?将多个数字放在多个 int vars 或一个 int[] 数组中更好吗?
【发布时间】:2023-04-03 18:30:01
【问题描述】:

只是想知道,因为我经常发现自己提供坐标(X,Y)之类的输入,并且想知道哪种情况更好。 如果我将 3 个 int 存储在一个数组中,我会将代码减少到 1/3,但是否有更多理由更喜欢数组而不是多个 var?

举例说明:

int[] coord = new int[2];
coord[0] = 3;
coord[1] = 2;

int x = 3;
int y = 2;

【问题讨论】:

  • 你能提供更多的上下文吗?例如能否提供示例方法和示例输入?
  • 显式变量更具可读性-例如,您的第二个示例比第一个示例更具可读性,并且变量名称传达了信息。数组和其他集合在代表一组实际事物时是完美的 - 因此,如果您在一组坐标上进行操作,那么一组坐标(如您的示例)将是有意义的,而不用担心哪个是 x,哪个是y等

标签: c# arrays optimization integer


【解决方案1】:

我想说,如果坐标是如此紧密耦合以至于您总是将它们一起传递(我相信这是真的),那么您可以创建一个结构来封装它们。

public struct Coords
{
    private int x;
    private int y;

    public Coords(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

    public int X
    {
        get { return x; }
    }

    public int Y
    {
        get { return y; }
    }
}

在这种情况下,您可以这样传递:

var c = new Coords(1, 2);
MyMethod(c);

您的问题附有优化标签,但如果问题对您的应用程序性能不重要,我会在纳秒内进行可读性/设计。

【讨论】:

  • 另外,考虑使用不可变的struct。它可能更适合坐标。
  • @LucasTrzesniewski 感谢您的宝贵意见。我编辑了我的答案。
【解决方案2】:

这有点取决于您使用这些值的目的。

如果您持有大量的值,例如在游戏中,您应该让自己和其他编码人员易于阅读,并阐明值的含义。

你不应该在一个数组中保存很多值,比如 HP、MP、速度、旋转、高度、宽度……而不是明确它们是什么。

但是你应该说 HP=100; MP=80, ... 在这种情况下,几乎每次都有一个“玩家”课程。 该类包含 player.hitpoints、player.magicpoints、player.speed、...

但对于坐标,我认为程序员使用的是具有 x、y(有时是 z)坐标的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    相关资源
    最近更新 更多