Não é possível usar String.Empty como um valor padrão para um parâmetro opcional
estou lendoC # eficaz de Bill Wagner. NoItem 14 - Minimizar a lógica de inicialização duplicada, ele mostra o seguinte exemplo de uso do novo recurso de parâmetros opcionais em um construtor:
public MyClass(int initialCount = 0, string name = "")
Observe que ele usou""
ao invés destring.Empty
.
Ele comenta:
Você notará [no exemplo acima] que o segundo construtor especificou "" para o valor padrão no diretórionome parâmetro, em vez do mais habitualstring.Empty
. Isso é porquestring.Empty
não é uma constante em tempo de compilação. É uma propriedade estática definida na classe de sequência. Como não é uma constante de compilação, você não pode usá-lo como valor padrão para um parâmetro.
Se não podemos usar ostring.Empty
estática em todas as situações, então isso não anula o propósito dela? Eu pensei que nós o usaríamos para ter certeza de que temos um meio independente do sistema de se referir à string vazia. Meu entendimento está errado? Obrigado.
ATUALIZAR
Apenas um comentário de acompanhamento. De acordo com o MSDN:
Cada parâmetro opcional possui um valor padrão como parte de sua definição. Se nenhum argumento for enviado para esse parâmetro, o valor padrão será usado.Os valores padrão devem ser constantes.
Então não poderemos usarSystem.Environment.NewLine
ou use objetos recém-instanciados como valores padrão. Ainda não usei o VS2010, e isso é decepcionante!