?
Meine Klasse hat eine Eigenschaft public byte[] Location{get;} = new byte[30];
Ich möchte es aus einem ReadOnlySpan<byte> füllen können. aber ich kann keine API-Methoden finden, die dies ermöglichen.
Das nächstgelegene, das ich gefunden habe, ist:
var array = span.Slice(0,30).ToArray();
Array.Copy(array, Locations, 30);
Aber ein neues Array erstellen zu müssen, nur um daraus zu kopieren, scheint wirklich hässlich ... eine Array-Erstellung und zwei Kopien sind erforderlich. Ich könnte die Eigenschaft einstellbar machen, aber es ist nicht wirklich das beabsichtigte Design.
Übersehe ich eine offensichtliche Methode?
-----------------------------------
Haben Sie andere Lösungen für diese Aufgabe gefunden?
-----
Noch nicht - Ich lasse es, um etwas mehr Aufmerksamkeit zu erregen, sonst akzeptiere ich Ihre Antwort, die zumindest ein wenig erscheint besser als mein Ansatz :)
-----
Sie könnten ein Span<byte> Um Ihr Location-Array als Ziel festzulegen, verwenden Sie dann CopyTo für die Kopie:
var source = new ReadOnlySpan<byte>(Source).Slice(0, 30);
var target = new Span<byte>(Location, 0, 30); //Modify start & length as required
source.CopyTo(target);
-----------------------------------
Sehr schön, danke. Für mich ist das sogar (etwas) schneller als Buffer.BlockCopy() (was wiederum genauso schnell ist wie das „Entsichern“ nach memcpy. Ja, ich habe es einem Benchmarking unterzogen, weil ich es wissen musste... :) YMMV-| |+|-