Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
18/09/10 10:22
sps84
Ciao a tutti, sto continuando a studiare qusto magnifico linguaggio, ora sto imparando a lavorare con le classi etc. Da un esempio del libro che sto leggendo trovo questa clasee chiamata "Emplyee"
public class Employee {

        private string name = "";

        public void getName()
        {
            Console.WriteLine(name);
        }

        public Employee(params string[] _name)
        {
            switch (_name.Length)
            { 
                case 1:
                    name = _name[0];
                    break;
                case 2:
                    name = _name[0] + "  " + _name[1];
                    break;
                default:
                    Console.WriteLine("Si è verificato un errore!");
                    break;
            }        
        }    
    }


Essa funziona ma avrei bisogno di un aiuto per capire meglio l'header della funzione Employee di preciso params per cosa sta? e sopratutto perchè name ha l'underscore davanti? Probabilmente sto facendo confusione io.

 public Employee(params string[] _name) {....}

aaa
18/09/10 10:49
Bonny
La parola chiave params consente di specificare un parametro di metodo.
È possibile inviare un elenco di argomenti separato da virgole del tipo specificato nella dichiarazione di parametri o una matrice di argomenti del tipo specificato.È inoltre possibile non inviare alcun argomento.
In una dichiarazione di metodo non è possibile aggiungere ulteriori parametri dopo la parola chiave params ed è consentito l'uso di una sola parola chiave params.
l'underscore è solo per differenziare il parametro formale "_name" dalla variabile di classe "name".
Spero di esserti stato d'aiuto:D
aaa
18/09/10 12:11
sps84
Postato originariamente da Bonny:

La parola chiave params consente di specificare un parametro di metodo.
È possibile inviare un elenco di argomenti separato da virgole del tipo specificato nella dichiarazione di parametri o una matrice di argomenti del tipo specificato.È inoltre possibile non inviare alcun argomento.
In una dichiarazione di metodo non è possibile aggiungere ulteriori parametri dopo la parola chiave params ed è consentito l'uso di una sola parola chiave params.
l'underscore è solo per differenziare il parametro formale "_name" dalla variabile di classe "name".
Spero di esserti stato d'aiuto:D


Quindi dopo params posso passare solo un tipo di dato, per esempio un array di stringhe o qualsiasi altra cosa purchè sia solo una esatto?

quindi questo sarebbe errato?

public Employee(params string[] _name, params string[] _surname)

aaa
19/09/10 8:57
Bonny
Un po’ come per i Varargs in Java anche in C# è possibile passare un numero variabile di parametri (o argomenti) ad un metodo.
Per farlo viene utilizzata la parola chiave params nella dichiarazione dei parametri del metodo.
Questa parola chiave lavora con gli array, e può essere “assegnata” solo all’ultimo parametro di un metodo.

esempio:

public int Sum(params int[] numbers)
{
int tot = 0;
for (int j = 0; j < numbers.Length; j++)
{
tot += numbers[j];
}
return tot;
}

La funzione è praticamente identica a quella che si avrebbe usando un array, ma con una differenza importante: usanto params, infatti, ora non è necessario passare gli argomenti in questa maniera:

int[] nums = {4, 6, 9, 1};
Sum(nums);

Questa modalità, infatti, è abbastanza lenta, in confronto all’uso di params, che permette di richiamare il metodo semplicemente passandogli un numero arbitrario di parametri che andranno poi a formare l’array:

Sum(4); //return 4
Sum(7, 7, 1); //return 15
Sum(4, 4); //return 8
Sum(); //return 0
aaa
19/09/10 12:09
sps84
Postato originariamente da Bonny:

Un po’ come per i Varargs in Java anche in C# è possibile passare un numero variabile di parametri (o argomenti) ad un metodo.
Per farlo viene utilizzata la parola chiave params nella dichiarazione dei parametri del metodo.
Questa parola chiave lavora con gli array, e può essere “assegnata” solo all’ultimo parametro di un metodo.

esempio:

public int Sum(params int[] numbers)
{
int tot = 0;
for (int j = 0; j < numbers.Length; j++)
{
tot += numbers[j];
}
return tot;
}

La funzione è praticamente identica a quella che si avrebbe usando un array, ma con una differenza importante: usanto params, infatti, ora non è necessario passare gli argomenti in questa maniera:

int[] nums = {4, 6, 9, 1};
Sum(nums);

Questa modalità, infatti, è abbastanza lenta, in confronto all’uso di params, che permette di richiamare il metodo semplicemente passandogli un numero arbitrario di parametri che andranno poi a formare l’array:

Sum(4); //return 4
Sum(7, 7, 1); //return 15
Sum(4, 4); //return 8
Sum(); //return 0


Grazie mille Bonny
aaa