Quando è necessario utilizzare l'operatore checked
in C#?
È adatto solo per la gestione delle eccezioni?Quando è necessario utilizzare l'operatore controllato in C#?
risposta
Si potrebbe utilizzare checked
in guardia contro un (silenzioso) di overflow in un'espressione.
E utilizzare unchecked
quando si sa che potrebbe verificarsi un trabocco innocuo.
Si utilizzano entrambi in luoghi in cui non si desidera fare affidamento sull'impostazione predefinita del compilatore (a livello di progetto).
Entrambe le forme sono piuttosto rare, ma quando si esegue l'aritmetica di interi critici vale la pena di pensare a un possibile overflow.
Si noti inoltre che sono disponibili in due forme:
x = unchecked(x + 1); // (expression)
unchecked { x = x + 1;} // { statement(s) }
Da The checked and unchecked operators
Il controllati ed incontrollati operatori vengono utilizzati per controllare il controllo di overflow contesto per integrale tipo operazioni aritmetiche e conversioni.
In un contesto controllato, se un'espressione produce un valore che è al di fuori della gamma del tipo di destinazione, il risultato dipende se l'espressione è costante o non costante. Le espressioni costanti causano errori di compilazione, mentre le espressioni non costanti vengono valutate in fase di esecuzione e generano eccezioni.
In un contesto incontrollato, se un espressione produce un valore che è fuori del campo del tipo di destinazione , il risultato viene troncato.
checked
vi aiuterà a prendere System.OverFlowException
che passerà inosservato altrimenti
int result = checked (1000000 * 10000000);
// Error: operation > overflows at compile time
int result = unchecked (1000000 * 10000000);
// No problems, compiles fine
checked
vs. unchecked
è utile anche nel quelle volte in cui stai facendo matematica intera. in particolare le operazioni di incremento e si sa che si andrà ad incrementare oltre UInt32.MaxValue
, e si desidera che l'overflow sia innocuo a 0
.
OK, questo è quello che sono .. Potresti approfondire quando vuoi farlo? – NotMe