Usuário com melhor resposta
Retorno de um Parâmetro Atualizado

Pergunta
-
Boa noite pessoal,
Estou com um pequeno problema e gostaria da ajuda de vocês. Desenvolvi um Classe para calcular um Digito Verificador de um determinado número. Para essa classe eu estou enviando dois parâmetros. O número de 43 posições e um outro parâmetro que me retornará o valor encontrado. Eu consigo calcular o Dígito sem nenhum problema, porém, não estou conseguindo retorna esse parâmetro atualizado para a minha aplicação. Você poderiam me orientar como eu devo retornar esse parâmetro? Segue em anexo a minha classe:
Eu à chamo desse forma:
CalculoDigitoGeralBoleto CalcDigitoGeral = new CalculoDigitoGeralBoleto();
CalcDigitoGeral.CalculaDigitoGeral(cConfBoleto, cDigitoGeralBoleto);
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BoletoBancario.BLL { public class CalculoDigitoGeralBoleto { // int nIndGeral = 43; int nInd12 = 2; int nNumero; int nTotal; int nTot2 = 2; int nTot1 = 1; int nResto; int nConfBoleto; string cDigitoGeralBoleto; string[] vValorCalculado = new string[44]; public void CalculaDigitoGeral(string cConfBoleto, string cDigitoGeralBoleto) { for (int nIndGeral = 43; nIndGeral != 0; nIndGeral--) { if (nInd12 == 1) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 2; } else { if (nInd12 == 2) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 1; } } } for (int nIndG = 0; nIndG <= 43; nIndG++) { nNumero = Convert.ToInt32(vValorCalculado[nIndG]); nTotal = (nTotal + nNumero); } nResto = (nTotal % 10); if (nResto.Equals(0)) { cDigitoGeralBoleto = "0"; } else { nConfBoleto = (10 - nResto); cDigitoGeralBoleto = Convert.ToString(nConfBoleto); } this.cDigitoGeralBoleto = cDigitoGeralBoleto; return this.cDigitoGeralBoleto; } } }
Respostas
-
Garibaldo,
Usando o 1º exemplo você precisa atribuir o valor retornado pelo método a uma variável, por exemplo:
CalculoDigitoGeralBoleto CalcDigitoGeral = new CalculoDigitoGeralBoleto(); string retorno = CalcDigitoGeral.CalculaDigitoGeral(cConfBoleto, cDigitoGeralBoleto);
Na variável retorno terá o valor retornado pelo método
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta GaribaldoGuerreiro terça-feira, 3 de janeiro de 2017 13:51
Todas as Respostas
-
Olá,
Há duas maneiras para retornar o valor por um método.
Um deles é definir na assinatura dele o tipo de retorno e no final do método usar o return, dessa forma:
public string CalculaDigitoGeral(string cConfBoleto, string cDigitoGeralBoleto) { for (int nIndGeral = 43; nIndGeral != 0; nIndGeral--) { if (nInd12 == 1) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 2; } else { if (nInd12 == 2) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 1; } } } for (int nIndG = 0; nIndG <= 43; nIndG++) { nNumero = Convert.ToInt32(vValorCalculado[nIndG]); nTotal = (nTotal + nNumero); } nResto = (nTotal % 10); if (nResto.Equals(0)) { cDigitoGeralBoleto = "0"; } else { nConfBoleto = (10 - nResto); cDigitoGeralBoleto = Convert.ToString(nConfBoleto); } return cDigitoGeralBoleto; }
Outra forma é retornar a partir do próprio parâmetro, mas nesse caso deve ser usado o out na assinatura do método e também quando for chamá-lo, dessa forma:
public void CalculaDigitoGeral(string cConfBoleto, out string cDigitoGeralBoleto) { for (int nIndGeral = 43; nIndGeral != 0; nIndGeral--) { if (nInd12 == 1) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 2; } else { if (nInd12 == 2) { nNumero = Convert.ToInt32(cConfBoleto.Substring(nIndGeral, 1)); nTotal = (nTot2 * nNumero); vValorCalculado[nIndGeral] = Convert.ToString(nTotal); nInd12 = 1; } } } for (int nIndG = 0; nIndG <= 43; nIndG++) { nNumero = Convert.ToInt32(vValorCalculado[nIndG]); nTotal = (nTotal + nNumero); } nResto = (nTotal % 10); if (nResto.Equals(0)) { cDigitoGeralBoleto = "0"; } else { nConfBoleto = (10 - nResto); cDigitoGeralBoleto = Convert.ToString(nConfBoleto); } }
Exemplo chamando o método com o out
string valor1 = "xxxxxx"; string valor2; CalculaDigitoGeral("xxxxxxx" out valor2);
Espero ter ajudado!
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
Bom dia André,
Eu usei o primeiro exemplo que você indicou, porém, não funcionou. Será que é a forma que eu estou chamando a função: Estou chamando dessa forma.
CalculoDigitoGeralBoleto CalcDigitoGeral = new CalculoDigitoGeralBoleto();
CalcDigitoGeral.CalculaDigitoGeral(cConfBoleto, cDigitoGeralBoleto);
Nesse momento o meu método, está igual ao exemplo que você indicou.
Garibaldo
-
Garibaldo,
Usando o 1º exemplo você precisa atribuir o valor retornado pelo método a uma variável, por exemplo:
CalculoDigitoGeralBoleto CalcDigitoGeral = new CalculoDigitoGeralBoleto(); string retorno = CalcDigitoGeral.CalculaDigitoGeral(cConfBoleto, cDigitoGeralBoleto);
Na variável retorno terá o valor retornado pelo método
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta GaribaldoGuerreiro terça-feira, 3 de janeiro de 2017 13:51
-