Qu'est-ce que le travail de logique natif derrière public static void Reverse (Array array, int index, int longueur);Logique derrière la méthode Array.Reverse()
0
A
Répondre
2
boucle à partir du point de départ, index
, au milieu de la plage, index + length/2
, en échangeant chaque array[i]
avec array[index + length - i - 1]
.
5
Vous pouvez utiliser .NET Reflector pour que:
[ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
public static void Reverse(Array array, int index, int length)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if ((index < array.GetLowerBound(0)) || (length < 0))
{
throw new ArgumentOutOfRangeException((index < 0) ? "index" : "length", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
}
if ((array.Length - (index - array.GetLowerBound(0))) < length)
{
throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
}
if (array.Rank != 1)
{
throw new RankException(Environment.GetResourceString("Rank_MultiDimNotSupported"));
}
if (!TrySZReverse(array, index, length))
{
int num = index;
int num2 = (index + length) - 1;
object[] objArray = array as object[];
if (objArray == null)
{
while (num < num2)
{
object obj3 = array.GetValue(num);
array.SetValue(array.GetValue(num2), num);
array.SetValue(obj3, num2);
num++;
num2--;
}
}
else
{
while (num < num2)
{
object obj2 = objArray[num];
objArray[num] = objArray[num2];
objArray[num2] = obj2;
num++;
num2--;
}
}
}
}
TrySZReverse est une méthode native qui peut parfois faire la même chose que plus rapide.
Questions connexes
- 1. Quelle est la logique derrière t ('flash.notice.order.creditcard.valid')?
- 2. Refactoring pour séparer la logique métier du code derrière
- 3. Logique derrière le comptage des vues d'une page
- 4. Quelle est la logique derrière la façon Qt de nommer les classes?
- 5. Quelle est la logique derrière la définition de macros dans une structure?
- 6. Quelle est la logique derrière l'algorithme de la division de Fourier?
- 7. Code d'appel méthode derrière de Jquery
- 8. Logique de contrôle simultané en bloc/méthode
- 9. Balise d'ancrage onclick pour appeler un code derrière la méthode
- 10. balise span onclick appeler un code derrière la méthode
- 11. Django: Ajout d'une logique supplémentaire à la méthode de connexion?
- 12. Logique de programme simple pour appeler la méthode en continu
- 13. Déplacez cette logique dans la méthode de recherche?
- 14. Logique utilisée dans la méthode EnsureCapacity dans ArrayList
- 15. exécuter la méthode javascript après avoir terminé le code derrière la méthode?
- 16. Asp.net pager cliquez sur l'événement ne se déclenche pas, quelle est la logique derrière?
- 17. Documenter la logique dans javadoc
- 18. aide à comprendre la logique derrière la façon dont javascript exécute sur les nouveaux éléments dom créé à la volée
- 19. Réécriture de la logique?
- 20. se lier à une méthode dans le code derrière
- 21. Méthode de couche logique métier Callling à partir de PageMethods
- 22. méthode d'appel dans le code derrière de JQuery
- 23. Logique derrière le lien des membres ExpandoObject() et API FB Graph
- 24. conception OO pour la logique métier
- 25. code asp.net derrière la variable
- 26. Comment analyser la logique booléenne?
- 27. Suivre la logique par l'utilisateur
- 28. php Horodatage de la logique de travail
- 29. Y a-t-il une logique sérieuse derrière le bogue de Xcode Organizer quand la capture d'écran ne fonctionne pas?
- 30. Tests unitaires Code ASP.NET derrière
Avec deux réponses correctes à ce sujet, tout ce qui me reste est de suggérer ".NET Reflector" à vous ... avec cet outil, vous pouvez démonter cette méthode par vous-même. (Ou vous pouvez télécharger les sources .NET) – Hinek