Valore decimale Controlla se zero
Domanda
Sto cercando di scrivere un metodo di divisione, che accetta 2 parametri.
public static decimal Divide(decimal divisor, decimal dividend)
{
return dividend / divisor;
}
Ora, se il divisore è 0, otteniamo l'errore impossibile dividere per zero, il che va bene.
Quello che vorrei fare è controllare se il divisore è 0 e, se lo è, convertirlo in 1.C'è un modo per farlo senza avere molte istruzioni if nel mio metodo?Penso che molti if() creino disordine.So che matematicamente questo non dovrebbe essere fatto, ma ho altre funzionalità per questo.
Per esempio:
if(divisor == 0)
{
divisor = 1;
}
return dividend / divisor;
Si può fare senza il if()
dichiarazione?
Soluzione
Puoi fare un'istruzione if condizionale come questa.Questo è lo stesso di IIF in VB.net
return dividend / ((divisor == 0) ? 1 : divisor);
Assicurati di racchiudere la seconda metà con () altrimenti riceverai un errore di divisione.
Altri suggerimenti
Utilizzando il ?:
operatore
return (divisor == 0) ? dividend : dividend / divisor
È più o meno uguale all'istruzione if, ma è più pulita.
return dividend / divisor == 0 ? 1 : divisor;
Potresti creare il tuo tipo e sovraccaricare l'operatore / per ottenere il comportamento desiderato, se lo desideri davvero.Implementare gli operatori di conversione impliciti per evitare il cast o la conversione del tipo.
Non penso che sarebbe una buona idea, tuttavia, poiché aggiungerebbe un sovraccarico di tempo di esecuzione;con l'unico vantaggio di ottenere del codice che (probabilmente) sembra un po' più pulito.