gpt4 book ai didi

c# - 如何为 Span 创建结构

转载 作者:行者123 更新时间:2023-12-02 16:42:29 25 4
gpt4 key购买 nike

我正在尝试创建一个 Struct类型 Span<byte>但我收到此行的编译器错误:
public Span<byte> X { get; set; }

它说:
字段或自动实现的属性不能是 Span<byte> 类型除非它是 ref 结构的实例成员。

我不确定这意味着什么,也不知道如何创建 Span<byte> 的结构.我知道structs非常快所以这就是我尝试同时使用 Span 的原因和 Structs一起。谢谢!

    public struct SpanStruct
{
public Span<byte> X { get; set; }
public SpanStruct(Span<byte> x)
{
X = x;
}
}
void function1()
{
var list = new SpanStruct[1000];
for (int i = 0; i < 1000; i++)
{
Span<byte> span = new Span<byte>();
list[i] = new SpanStruct(span);
}
}

最佳答案

Span 是一种特殊的类型,专门用于堆栈。您不能将它放在 class 中,因为这可能会使它引用的内容不会超过堆引用。例如,您可以使用 Span 来引用通过 stackalloc 创建的内容。

通常 Span 仅用作局部变量,以尽可能抽象的方式引用一段数据。有些情况下存储它们是有意义的,但在很多情况下 Memory 更好,因为虽然它消除了引用诸如 stackalloc 之类的东西的能力,但你可能不会如果您在类中存储东西,则不需要这种能力。

如果您需要创建一个包含Spanstruct,请用public ref struct SpanStruct 表示它,但请注意,这也意味着它不能放在中。

关于c# - 如何为 Span<byte> 创建结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61326757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com