【问题标题】:Why can't we get a pointer to a generic struct?为什么我们不能获得指向泛型结构的指针?
【发布时间】: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 关键字。我会查的。

标签: c# pointers struct


【解决方案1】:

我使用的是 C# 7.3(Unity 兼容性)。显然,这件事在 C# 8.0 中成为可能

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8#unmanaged-constructed-types

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2020-09-09
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多