Je suis habitué à C# n'effectuant des contrôles de débordement, comme les états de spécification de la langue (§7.5.12):C# - Qu'est-ce qui pourrait causer un dépassement de capacité ici?
Pour les expressions non constantes (expressions qui sont évaluées lors de l'exécution) qui ne sont pas entourés par les opérateurs ou instructions cochés ou non cochés, le contexte de contrôle de dépassement de capacité par défaut est décoché sauf si des facteurs externes (tels que les commutateurs du compilateur et la configuration de l'environnement d'exécution) nécessitent une évaluation vérifiée.
Je profitai de ce lorsque vous faites une limite de tableau vérifier dans le code de bas niveau:
if ((uint)index >= (uint)TotalCount)
...
Si l'indice est négatif, je pense qu'il devienne un grand nombre positif afin qu'il dépasse TotalCount. Cependant, à ma grande surprise, un nombre négatif produit OverflowException, et je dois envelopper l'expression dans unchecked(). J'ai regardé à travers les options du projet dans Visual Studio et je ne vois pas une option pour activer ou désactiver la vérification de débordement. Alors pourquoi cela pourrait-il être ici?
Merci, je n'ai jamais remarqué que le bouton Avancé avant! – Qwertie