gpt4 book ai didi

c# - 指定的类型必须是不包含引用的结构

转载 作者:行者123 更新时间:2023-11-30 13:03:26 24 4
gpt4 key购买 nike

我正在尝试使用 Write<T> MemoryMappedViewAccessor 上的函数类(class)。我的T在这种情况下如下:

[StructLayout(LayoutKind.Explicit)]
public struct Message
{
public void AddString(string str)
{
if (stringContents == null)
stringContents = new byte[1024 * 10];
stringContents = Encoding.ASCII.GetBytes(str);
}
public string GetString()
{
if (stringContents == null)
return string.Empty;
return Encoding.ASCII.GetString(stringContents);
}
[FieldOffset(0)]
public byte[] stringContents;
}

但是,当我打电话的时候,比如:

//Initialized Elsewhere: MemoryMappedViewAccessor writer
Message messageAlreadyOnWire = new Message();
messageAlreadyOnWire.AddString(data);
writer.Write<Message>(0, ref messageAlreadyOnWire);

我收到如下错误:

The specified Type must be a struct containing no references. Parameter name: type

我的结构中唯一的“引用”是一个字节数组。有什么办法可以解决这个问题吗?我可以使用固定长度的字节数组,但我不确定如何在不深入研究 unsafe 的情况下声明一个字节数组。 ,我不想这样做。

最佳答案

作为此问题的解决方法,您可以使用 MemoryMappedViewStream而不是 MemoryMappedViewAccessor;然后在其上使用传统的流读/写而不是访问器。

关于c# - 指定的类型必须是不包含引用的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901764/

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