Pergunta

parâmetros padrão fazer por métodos violam encapsulamento?

Qual foi a lógica por trás não fornecer parâmetros padrão em C #?

Foi útil?

Solução

Gostaria de ter este como o "oficial "responder da Microsoft. No entanto, os parâmetros padrão (e nomeado) irá mais definitivamente estar disponível em C # 4.0.

Outras dicas

Não, não afeta o encapsulamento de qualquer forma. Simplesmente não é muitas vezes necessário. Muitas vezes, criando uma sobrecarga que tem menos argumentos é uma solução mais flexível e mais limpo, então Designer C # 's simplesmente não ver uma razão para adicionar a complexidade dos parâmetros padrão para o idioma.

Adicionando "Outra maneira de fazer a mesma coisa" é sempre uma troca. Em alguns casos, pode ser conveniente. Mas o mais sintaxe você faz legal, mais complexa a linguagem torna-se para aprender, e quanto mais você pode parede em si mesmo, impedindo futura extensão. (Talvez eles tinham um dia vir acima com uma outra extensão da linguagem, que utiliza uma sintaxe similar. Então isso seria impossível adicionar, porque ele tinha conflito com o recurso que adicionou anteriormente)

Como foi observado, parâmetros padrão não eram uma característica priorizada, mas é provável que ser adicionado em C # 4.0. No entanto, creio que foram excelentes razões para não incluí-lo mais cedo (em 4.0, como eu entendi, Itas principalmente para suporte digitação pato estilos de programação, onde os parâmetros padrão aumenta a compatibilidade do tipo).

Eu acredito listas de parâmetros excessiva (certamente mais do que 4-5 parâmetros distintos) é um código cheiro . Os parâmetros predefinidos não são maus em si mesmos, mas o risco incentivando má concepção, atrasando a refatoração em mais objetos.

Para a sua primeira pergunta - não, é exatamente o mesmo como o fornecimento de vários construtores sobrecarregados. Quanto ao segundo, eu não poderia dizer.

Os parâmetros predefinidos serão incluídas em C # 4.0

Alguns material de leitura sobre isso:

clique

clique

Parece também que o autor de este post vai publicar um artigo em um futuro próximo em o 'porquê' MS escolhe para implementar parâmetros padrão em C #

Aqui está uma resposta porque não é fornecido em C # http://blogs.msdn.com/csharpfaq/archive/ 2004/03/07 / 85556.aspx

Uma desvantagem com a implementação parâmetro padrão em C # 4.0 é que ele cria uma dependência no nome de parâmetros. Isso já existia em VB, o que poderia ser uma das razões por que eles escolheram para implementá-lo em 4.0.

Outra desvantagem é que o valor padrão depende de como você lançar o seu objeto. Você pode ler sobre ele aqui: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top