gpt4 book ai didi

c# - 无法将 uint* 转换为 uint[]

转载 作者:太空狗 更新时间:2023-10-29 20:21:44 27 4
gpt4 key购买 nike

我有这段无法编译的代码:

public struct MyStruct
{
private fixed uint myUints[32];
public uint[] MyUints
{
get
{
return this.myUints;
}
set
{
this.myUints = value;
}
}
}

现在,我知道为什么代码无法编译,但显然我已经累得无法思考了,需要一些帮助让我走上正确的方向.我已经有一段时间没有使用不安全的代码了,但我很确定我需要执行一个 Array.Copy(或 Buffer.BlockCopy?)并返回一个数组的副本,但是那些不接受我需要的参数。我忘记了什么?

谢谢。

最佳答案

在使用 fixed 缓冲区时,您必须在 fixed 上下文中工作:

public unsafe struct MyStruct {
private fixed uint myUints[32];
public uint[] MyUints {
get {
uint[] array = new uint[32];
fixed (uint* p = myUints) {
for (int i = 0; i < 32; i++) {
array[i] = p[i];
}
}
return array;
}
set {
fixed (uint* p = myUints) {
for (int i = 0; i < 32; i++) {
p[i] = value[i];
}
}
}
}
}

关于c# - 无法将 uint* 转换为 uint[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564015/

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