La plus rapide façon de le faire est d'utiliser Array.Copy
, ce qui, dans le final de la mise en œuvre utilise une mémoire de masse opération de transfert (similaire à memcpy):
var oldArray = new int?[] { 1, 2, 3, 4, 5, 6 };
var newArray = new int?[oldArray.Length];
Array.Copy(oldArray, 1, newArray, 0, oldArray.Length - 1);
// newArray is now { 2, 3, 4, 5, 6, null }
Modifié: selon la documentation:
Si sourceArray et destinationArray se chevauchent, cette méthode se comporte comme si les valeurs d'origine de sourceArray ont été conservés dans un emplacement temporaire avant de destinationArray est écrasé.
Donc, si vous ne voulez pas allouer un nouveau tableau, vous pouvez passer dans le tableau d'origine pour à la fois la source et la destination, bien que j'imagine que le compromis sera un peu plus lent de la performance car les valeurs de passer par un hébergement temporaire position.
Je suppose que, comme dans toute enquête de ce genre, vous devriez faire un peu rapide de l'analyse comparative.