Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consigo passar valores dos construtores em uma variavel fora dos parenteses?

Bom dia! Eu gostaria de saber se há a possibilidade de passar os valores dos construtores fora do parenteses... ex:

Public Class Conta
{
string Numero {get;set;}
string Agencia {get;set;}
string Nome {get;set;}
public Conta(string nome)
{
    this.Nome = nome;
}
}

E ai quando eu for instanciar essa classe, fazer algo do tipo:

Conta conta =  new Conta(//aqui viriam os parametros)
{
//Ao invés de colocar os valores nos parenteses... coloca-los aqui
}

Pergunto isso porque pensando num sistema com acesso ao banco de dados, eu não poderia deixar o parametro Nome, como hardcode, certo?

1 resposta
solução!

Olá, Felipe!

Não sei se entendi direito, sua dúvida, mas vamos lá.

Para sua ideia funcionar, as propriedades deveriam ser públicas:

    public class Conta
    {
        public string Numero { get; set; }
        public string Agencia { get; set; }
        public string Nome { get; set; }
        public Conta(string nome)
        {
            this.Nome = nome;
        }
    }

E então você poderia usar a sintaxe abaixo:

            Conta conta = new Conta("fulano de tal")
            {
               Agencia = "111",
               Numero = "123456-7"
            };

O que nada mais é do que um "açúcar sintático" (syntax sugar), isto é, uma maneira conveniente de escrever o código abaixo:

            Conta conta = new Conta("fulano de tal");
            conta.Agencia = "111";
            conta.Numero = "123456-7";

Mas não sei o que você quer dizer com "eu não poderia deixar o parametro Nome, como hardcode". Sobre o objeto Conta do exemplo, eu acho recomendável que os 3 parâmetros sejam incluídos no construtor, e sejam testados por validações (exemplo: nome, agência e número não podem ser nulos nem vazios. Agencia deve ter um certo número de caracteres e Numero deve ter um formato válido). Se esses requisitos não forem satisfeitos, você lança uma exceção de parâmetro inválido (InvalidArgumentException) impedindo o instanciamento do objeto. Caso contrário, você pode acabar tendo objetos Conta inválidos. A não ser que haja um bom motivo para não conter validações, como por exemplo, se a classe conta for um DTO (Data Transfer Object).