Come posso implementare un Attributo Opzionale in una firma di un metodo ?
In C# è concettualmente difficile pensare ad una forma opzionale, ma chi arriva da VB, qualche domanda se la pone, probabilmente perchè può ancora ritenere che un parametro sia e rimanga un entità FLUTTUANTE.
Supponiamo di trovarci nella situazione di dover implementare noi un parametro opzionale.
Firma
private void Foo(string param1, string param2)
{
if ( param1 == null) {param1 ="";}
if ( param2 == null) {param2 ="";}
// resto del codice...
}
Chiamata
Foo("A","b")
Oppure
Foo("A",null)
Tecnicamente funziona, e non ci fa perdere troppo tempo.
Possiamo però trovarci nella spiacevole situazione di dover effettuare una chiamata ad un metodo già esistente non implementato da noi ...
SampleFoo sf = new SampleFoo();
sf.DoFooFoo(param1, param2);
Possiamo .. e per fortuna estendere SampleFoo e trasformare il nostro metodo sperando che tutto vada... perchè
del codice altri non v'e' certezza...
public class MyFooFoo :SampleFoo();
public void new DoFooFoo(string param1, string param2)
{
if ( param1 == null) {param1 ="";}
if ( param2 == null) {param2 ="";}
base.DoFooFoo ( param1, param2 );
}
Ed ecco fatto ..
Come sempre va data la giusta considerazione se stiamo creando una funzione per cui un parametro ci sembra o ci può sembrare opzionale.. probabilmente non stiamo considerando il fatto che si possano creare degli override... il che
sarebbe anche meglio.
Foo(string param1)
Foo(string param1, string param2)
Foo(string[] params)
Cmq.. anche questa è andata.
Nessun commento:
Posta un commento