c# - 获取对数组内部结构的引用

标签 c# arrays struct ref

我想修改数组内部结构的字段,而不必设置整个结构。在下面的示例中,我想在数组中设置元素543的一个字段。我不想复制整个元素(因为复制MassiveStruct会影响性能)。

class P
{
    struct S
    {
      public int a;
      public MassiveStruct b;
    }

    void f(ref S s)
    {
      s.a = 3;
    }

    public static void Main()
    {
      S[] s = new S[1000];
      f(ref s[543]);  // Error: An object reference is required for the non-static field, method, or property
    }
}

有没有办法在C#中做到这一点?还是我总是必须将整个结构复制出数组,修改副本,然后将修改后的副本放回到数组中。

最佳答案

唯一的问题是,您尝试从静态方法调用实例方法,而没有P实例。

f设为静态方法(或创建P实例以对其进行调用)就可以了。这都是关于读取编译器错误的:)

话虽如此,我强烈建议您:

  • 如果可能,请避免创建大量结构
  • 尽可能避免创建可变结构
  • 避免公共(public)字段
  • 关于c# - 获取对数组内部结构的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133859/

    相关文章:

    c# - 过滤器优化的数据分组算法

    c# - 将 T[,] 转换为 T[][] 的最快方法?

    c - 访问函数内部创建的数据结构?

    c - 初始化 C 结构数组,其大小在编译时未知

    C# : Wait for n miliseconds, 并每 n/m 毫秒测试一个 bool 值

    c# - WPF 标签到文本框

    c# - 是否可以将 "patch"a .exe 用于复制保护?

    使用延迟形状数组从 C 调用 Fortran

    javascript - 如何根据 JavaScript 中其他 div 的文本内容在图像库中制作标题?

    c - 如何访问另一个结构内的结构内的元素作为指针?