获取对装箱值类型的引用

问题描述 投票:0回答:1

[使用System.Memory包,有一种简单的方法来获取存储在装箱实例中的内部数据的(只读)引用(例如ref Tin TSpan<T>Memory<T>)值类型?

我想出了这个解决方案,但是它需要固定对象并使用unsafe

object o = 1;
var handle = GCHandle.Alloc(o, GCHandleType.Pinned);
Span<int> span;
try
{
    var addr = handle.AddrOfPinnedObject();
    unsafe
    {
        span = new Span<int>(addr.ToPointer(), 1);
    }
} finally
{
    handle.Free();
}
c# .net
1个回答
0
投票

您可以使用in将值类型设为只读。示例:

© www.soinside.com 2019 - 2024. All rights reserved.