Vous ne pouvez pas éviter d'utiliser des valeurs encadrées, mais vous pouvez éviter la boxe actuelle. Ou plutôt, vous pouvez changer comment et quand la boxe se produit.
Vous pouvez préparer des valeurs en boîte à utiliser dans les paramètres, par exemple:
object[] boxedIntegers = new object[100];
for (int i = 0; i < boxedIntegers.Length; i++) {
boxedIntegers[i] = i;
}
Tant que vous gardez le tableau, les valeurs en boîte peuvent être utilisées à plusieurs reprises sans causer plus de boxe, et ils ne pas être collecté jusqu'à ce que le tableau ne soit plus utilisé.
Il est douteux que la boxe cause vraiment des problèmes de performances, mais maintenant vous avez un moyen de faire des tests réels au moins.
Le problème n'est pas avec la boxe elle-même, le problème est avec le GC qui a besoin de rassembler toutes ces versions en boîte plus tard. Le processus qui l'exécute consomme 100% de CPU, donc je veux optimiser toutes ces petites choses qui peuvent faire fonctionner GC plus longtemps. – DxCK
Je ne pense pas que l'utilisation du processeur à 100% est causée au GC. Le GC ne fonctionne pas de façon permanente, il fonctionne quand il le faut ... –