unsafeコンテキスト以外でIntPtrからSpan<T>またはReadOnlySpanに変換する方法は無い。(2019/1現在)


Span<T> または ReadOnlySpan<T> に変換したければ、
今まで通りunsafeコンテキストでnew Span<byte>(p.ToPointer(),length)みたいにしてください。

調べたこと

  • Span<T> または ReadOnlySpan<T> のコンストラクタに、void*を受け取るオーバーロードはあれどIntPtrを受け取るが見当たらない。
  • System.Memory アセンブリや System.Runtime.CompilerServices.Unsafeアセンブリを眺めてもそれらしいのが無い。
  • MSDNマガジンの表でも、当該のケースは記載されていない。
  • corefxのIssue を見ると、 > I do not think we need this API. でRejectされている。