gpt4 book ai didi

c# - 为什么我不能使用 GcHandle.Alloc 固定枚举数组

转载 作者:行者123 更新时间:2023-11-30 12:15:19 24 4
gpt4 key购买 nike

我想做以下事情:

public enum Blah
{
A,B
}

[Test,Explicit]
public void TestEnumGcHandle()
{
var ea = new Blah[10];
GCHandle.Alloc(ea, GCHandleType.Pinned);
}

但我得到:

System.ArgumentException : Object contains non-primitive or non-blittable data.

Are .net Enums blittable types? (Marshalling)声称枚举是可复制的,但我无法固定它们的数组。这可能是 GcHandle.Alloc 中的错误吗?我正在使用 .NET 3.5。

最佳答案

这在我的书中有点笨拙,但枚举不是原始的(typeof(Blah).IsPrimitive 是假的)并且不可 blittable。 blittable types 列表中缺少它.链接的 SO 问题是错误的。问题是无法找出 native 枚举的基础整数类型的大小。我认为是用力过猛,因为肯定有一种方法可以在托管枚举类型中指定它。好吧,做不到。

关于c# - 为什么我不能使用 GcHandle.Alloc 固定枚举数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628769/

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