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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top