Tenir compte de la méthode suivante (utilisée dans une méthode de fabrication):Comment puis-je extraire un sous-ensemble byte [] dans un code managé?
private Packet(byte[] rawBytes, int startIndex)
{
m_packetId = BitConverter.ToUInt32(rawBytes, startIndex);
m_dataLength = BitConverter.ToUInt16(rawBytes, startIndex + 4);
if (this.Type != PacketType.Data)
return;
m_bytes = new byte[m_dataLength];
rawBytes.CopyTo(m_bytes, startIndex + Packet.HeaderSize);
}
Les deux dernières lignes de code me semblent inutiles. Allouer plus de mémoire et le peupler avec des valeurs de la mémoire semble ridicule.
Avec le code non managé, quelque chose comme cela est possible:
m_bytes = (rawBytes + (startIndex + Packet.HeaderSize));
(je ne l'ont pas fait par un compilateur si la syntaxe est probablement hors, mais vous pouvez le voir est juste une question de manipulation de pointeur.)
Je suis tombé sur un problème similaire l'autre jour où une API retourne un octet tableau [] qui était vraiment un tableau court [].
Est-ce que ces types de permutations de tableaux ne coûtent que le coût de l'utilisation du code managé ou existe-t-il une nouvelle école de pensée qui me manque?
Merci d'avance.