Operações com Decimais
Esta classe estática contém métodos e propriedades com as operações comuns para trabalhar com valores do tipo decimal
. Todos os membros retornam os delegates
que realizam a operação descrita.
Atenção
Todas as classes de operações com valores númericos (
int
,decimal
edouble
) possuem as mesmas propriedades e métodos, alterando apenas o tipo dos parâmetros envolvidos.
Propriedades
Nome | Tipo | Descrição |
---|---|---|
Add | Func<decimal, decimal, decimal> | Retorna uma função para representar o operador +. |
Subtract | Func<decimal, decimal, decimal> | Retorna uma função para representar o operador -. |
Multiply | Func<decimal, decimal, decimal> | Retorna uma função para representar o operador *. |
Divide | Func<decimal, decimal, decimal> | Retorna uma função para representar o operador /. |
Add3 | Func<decimal, decimal, decimal, decimal> | Retorna uma função para representar o operador + entre três valores (valor1 + valor2 + valor3). |
Subtract3 | Func<decimal, decimal, decimal, decimal> | Retorna uma função para representar o operador - entre três valores (valor1 - valor2 - valor3). |
Multiply3 | Func<decimal, decimal, decimal, decimal> | Retorna uma função para representar o operador * entre três valores (valor1 * valor2 * valor3). |
Divide3 | Func<decimal, decimal, decimal, decimal> | Retorna uma função para representar o operador / entre três valores (valor1 / valor2 / valor3). |
Métodos
Nome | Parâmetros | Retorno | Descrição |
---|---|---|---|
AddWith | decimal value | Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Add com o parâmetro informado. |
SubtractWith | decimal value | Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Subtract com o parâmetro informado. |
MultiplyWith | decimal value | Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Multiply com o parâmetro informado. |
DivideWith | decimal value | Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Divide com o parâmetro informado. |
Add3With | decimal value | Func<decimal, decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Add3 com o parâmetro informado. |
Add3With | decimal value decimal value2 |
Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Add3 com os dois parâmetros informados. |
Subtract3With | decimal value | Func<decimal, decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Subtract3 com o parâmetro informado. |
Subtract3With | decimal value decimal value2 |
Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Subtract3 com os dois parâmetros informados. |
Multiply3With | decimal value | Func<decimal, decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Multiply3 com o parâmetro informado. |
Multiply3With | decimal value decimal value2 |
Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Multiply3 com os dois parâmetros informados. |
Divide3With | decimal value | Func<decimal, decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Divide3 com o parâmetro informado. |
Divide3With | decimal value decimal value2 |
Func<decimal, decimal> | Retorna uma função parcialmente aplicada à função retornada por Divide3 com os dois parâmetros informados. |
Como Usar
Como as propriedades retornam delegates para representar as operações, é possível utilizá-las como métodos.
Operação Add
decimal value = 10;
decimal value2 = 5;
decimal result = DecimalOperations.Add(value, value2);
//result= 15
Operação Subtract
decimal value = 10;
decimal value2 = 5;
decimal result = DecimalOperations.Subtract(value, value2);
//result= 5
Operação Multiply
decimal value = 10;
decimal value2 = 5;
decimal result = DecimalOperations.Multiply(value, value2);
//result= 50
Operação Divide
decimal value = 10;
decimal value2 = 5;
decimal result = DecimalOperations.Divide(value, value2);
//result= 2
Para os métodos temos uma sintaxe um pouco diferente, isso porque é realizada uma aplicação parcial ao método retornado pela própriedade.
Por conta disso, precisamos executar o método com os primeiros parâmetros, para obtermos um novo método que espera os parâmetros restantes:
Operação AddWith
decimal value = 10;
decimal value2 = 5;
Func<decimal ,decimal> addWith= DecimalOperations.AddWith(value);
decimal result = addWith(value2);
//result= 15
Também podemos realizar a chamada de forma concatenada:
decimal value = 10;
decimal value2 = 5;
decimal result = DecimalOperations.AddWith(value)(value2);
//result= 15
As operações ~With existem para as quatro operações descritas, todas elas seguem a mesma característica do exemplo anterior.
Os métodos ~With também são aplicáveis as funções que utilizam três parâmetros, nestes casos você pode utilizar a aplicação parcial com um ou dois parâmetros, de acordo com a necessidade.
Operação Add3With
decimal value = 10;
decimal value2 = 5;
decimal value3 = 5
Func<decimal, decimal, decimal> addWith2 = DecimalOperations.Add3With(value);
decimal result = addWith2(value2, value3);
//result= 20
Também podemos realizar a chamada de forma concatenada:
decimal value = 10;
decimal value2 = 5;
decimal value3 = 5
decimal result = DecimalOperations.Add3With(value)(value2, value3);
//result= 20
E por fim, podemos informar os dois parâmetros na primeira sobrecarga, em qualquer um dos modos:
decimal value = 10;
decimal value2 = 5;
decimal value3 = 5
Func<decimal, decimal> addWith= DecimalOperations.Add3With(value, value2);
decimal result = addWith(value3);
//result= 20
decimal value = 10;
decimal value2 = 5;
decimal value3 = 5
decimal result = DecimalOperations.Add3With(value,value2)(value3);
//result= 20
Perceba que as versões ~With passam pelo processo de aplicação parcial, não de currying.