quarta-feira, 2 de abril de 2008

Parâmetros de métodos não admitem valores padrão em C#

Dei de cara com esta mensagem hoje ao tentar criar um método com um parâmetro com valor padrão assim como costumava fazer em C++.

Metodo(string p1, bool p2 = false)


Em C++ é possível chamar apenas:

a.Metodo(p1);

Pois o compilador gera na verdade:

a.Metodo(p1, false);


Em C# isto não é permitido já que o correto é usar sobrecarga:

class A
{
public void Metodo(string p1, bool p2)
{
// (...)
}
public void Metodo(string p1)
{
// O valor do segundo parametro pode vir de um arquivo de configuração
Metodo(p1, false);
}
}


É menos conveniente implementar mais um método, ainda mais em um método com muitos parâmetros. No entanto, desta maneira o valor padrão pode ser carregado de uma arquivo de configuração podendo ser alterado sem a necessidade de recompilar o programa.

http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx

Nenhum comentário: