>Estive olhando um pouco o C#, e uma coisa que não ficou muito clara, é a possibilidade de em uma mesma classe você ter vários métodos com o mesmo nome, mas com implementações direrentes. Pelo que entendi, de acordo com os parâmetros passados será decidido qual o método será utilizado. É isto?
sim, é isto. No VFP, métodos são identificados unicamente através do nome (não podemos ter dois métodos com o mesmo nome na mesma classe). Podemos ter um método chamado Escrever, que deve escrever na tela qualquer valor passado pra ele. Por exemplo (esquece a função Transform para fins da explicação):
Function Escrever(Parametro)
do case
case vartype(Parametro) = "C"
? Parametro
case vartype(Parametro) = "D"
? DToC(Parametro)
etc....
endcase
EndFunc
No exemplo, você teria que testar todos os tipos de dado possíveis para que seu método funcionasse (mais uma vez: faz de conta que a função Transform não existe).
Como o VFP é de "tipagem fraca", você poderia passar absolutamente qualquer tipo de variável para o seu método. Por isso, você tem que "programar defensivamente", porque não necessariamente você realmente quer receber qualquer tipo de dado.
Já no .NET, o que define métodos unicamente é o nome do método + assinatura (lista de parâmetros e tipos). Isto se chama "Method Overloading" (acho que traduziram como "sobrecarga de método", ou algo assim).
Alguns benefícios nisto:
1. Você não precisa testar manualmente o tipo de variável que está entrando, pois o compilador fará isso.
2. Você terá a certeza de que somente serão passados os tipos de dados que você realmente espera, pois se você declarou um "overload" para receber uma string, e outro para receber uma data, se você tentar passar um lógico, o compilador irá te frear.
Bom, acho que deu pra clarear um pouco, né? :)
Claudio Lassala