C# 固定大小数组

Mat*_*vel 5 c# arrays

我开始学习 C#,我通常使用 C++。我正在尝试适应很多事情,但std::array似乎不可能......

我只想运行这种代码:

public struct Foo {};
public struct Test 
{ 
    public Foo value[20]; 
};
Run Code Online (Sandbox Code Playgroud)

我不想每次使用这个结构时都分配,我也不想使用一个类......我看到了fixed关键字,但它只适用于基本类型......没有像std::array?这样简单的东西吗?我什至可以在 C 中做到这一点。

你会如何解决这个问题?(即使它仍然是动态分配的..)

Ill*_*ack 3

使用固定大小的缓冲区 ( fixed) 仅适用于基本类型,因为它的用途是用于互操作。数组类型是引用类型,因此它们可以具有动态大小:

public struct Test 
{ 
    public Foo[] value; 
}
Run Code Online (Sandbox Code Playgroud)

但请注意,复制结构只会复制引用,因此数组将是相同的。我建议您要么使类型不可变(通过禁用写入数组),要么显式更改structclass控制克隆。

C# 中不存在固定大小的按值数组类型(尽管我曾经提出过一次)。你能得到的最接近的东西是一个值元组。