Frage

Ich bin daran gewöhnt, C # nicht Überprüfungen durchgeführt werden, da die Sprache spec Staaten (§7.5.12):

  

Für nicht konstante Ausdrücke (Ausdrücke, die zur Laufzeit ausgewertet werden), die von irgendwelchen aktiviert oder deaktiviert Betreiber oder Aussagen nicht eingeschlossen sind, der Überlauf Standardkontext Überprüfung deaktiviert ist, es sei denn externe Faktoren (wie Compiler-Switches und Ausführungsumgebung Konfiguration ) Aufruf geprüft Auswertung.

Ich nutzte dies, wenn eine Array-Grenzen zu tun Check-in Low-Level-Code:

if ((uint)index >= (uint)TotalCount)
    ...

Wenn der Index negativ ist, erwarte ich, dass es eine große positive Zahl werden, so dass es Totalcount überschreitet. Doch zu meiner Überraschung, eine negative Zahl erzeugt Overflow, und ich habe den Ausdruck in unkontrolliert umwickeln (). Ich schaute durch die Projektoptionen in Visual Studio und ich nicht eine Option zu aktivieren oder zu deaktivieren Überlaufprüfung. Warum also könnte es hier sein?

War es hilfreich?

Lösung

Es sollte in dem Projekt sein.

  1. Doppelklicken Sie auf den Ordner Eigenschaften klicken.
  2. Register Erstellen.
  3. Klicken Sie auf die Schaltfläche Erweitert ....
  4. Deaktivieren Sie die Option „überprüfe für arithmetischen Überlauf / Unterlauf“.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top