我开始学习 C#,我通常使用 C++。我正在尝试适应很多事情,但std::array似乎不可能......
我只想运行这种代码:
public struct Foo {};
public struct Test
{
public Foo value[20];
};
Run Code Online (Sandbox Code Playgroud)
我不想每次使用这个结构时都分配,我也不想使用一个类......我看到了fixed关键字,但它只适用于基本类型......没有像std::array?这样简单的东西吗?我什至可以在 C 中做到这一点。
你会如何解决这个问题?(即使它仍然是动态分配的..)
使用固定大小的缓冲区 ( fixed) 仅适用于基本类型,因为它的用途是用于互操作。数组类型是引用类型,因此它们可以具有动态大小:
public struct Test
{
public Foo[] value;
}
Run Code Online (Sandbox Code Playgroud)
但请注意,复制结构只会复制引用,因此数组将是相同的。我建议您要么使类型不可变(通过禁用写入数组),要么显式更改struct并class控制克隆。
C# 中不存在固定大小的按值数组类型(尽管我曾经提出过一次)。你能得到的最接近的东西是一个值元组。
| 归档时间: |
|
| 查看次数: |
11588 次 |
| 最近记录: |