【发布时间】:2021-03-17 02:41:20
【问题描述】:
为什么内联实例化结构会突然变成托管类型?不仅它的泛型被限制为非托管,而且结构本身是完全可blittable。
public struct MyStruct<T> where T : unmanaged
{
public int SomePrimitive;
}
public void DoSomething()
{
var mystruct = new MyStruct<int>();
var myPtr = &mystruct;
}
【问题讨论】:
-
它适用于我(C#8,勾选了不安全的构建选项)。你得到什么样的错误?
-
您可能还缺少不安全关键字
public unsafe void DoSomething()。同样在这种情况下,如图所示,您不需要非托管约束 -
@SylvainRodrigue docs.microsoft.com/en-us/dotnet/csharp/misc/cs0208 我正在使用 C#7.3
-
老实说,我以前从未见过
unmanaged关键字。我会查的。