Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#]Delucidazione su paramtri passati ad una funzione
Forum - C# / VB.NET - [C#]Delucidazione su paramtri passati ad una funzione

Avatar
sps84 (Normal User)
Pro


Messaggi: 196
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 12:22
Sabato, 18/09/2010
Questo topic è stato chiuso dal moderatore

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"
Codice sorgente - presumibilmente C#

  1. public class Employee {
  2.  
  3.         private string name = "";
  4.  
  5.         public void getName()
  6.         {
  7.             Console.WriteLine(name);
  8.         }
  9.  
  10.         public Employee(params string[] _name)
  11.         {
  12.             switch (_name.Length)
  13.             {
  14.                 case 1:
  15.                     name = _name[0];
  16.                     break;
  17.                 case 2:
  18.                     name = _name[0] + "  " + _name[1];
  19.                     break;
  20.                 default:
  21.                     Console.WriteLine("Si è verificato un errore!");
  22.                     break;
  23.             }        
  24.         }    
  25.     }



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.

Codice sorgente - presumibilmente C# / VB.NET

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




L'apprendista di C#...
PM
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 12:49
Sabato, 18/09/2010
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


Bonny
PM
Avatar
sps84 (Normal User)
Pro


Messaggi: 196
Iscritto: 11/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 14:11
Sabato, 18/09/2010
Testo quotato

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?

Codice sorgente - presumibilmente C# / VB.NET

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




L'apprendista di C#...
PM
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 10:57
Domenica, 19/09/2010
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


Bonny
PM
Avatar
sps84 (Normal User)
Pro


Messaggi: 196
Iscritto: 11/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 14:09
Domenica, 19/09/2010
Testo quotato

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


L'apprendista di C#...
PM