2010-07-08 7 views
-1

Je voudrais savoir comment déclarer nouvelle variable directement dans les tranches de paramètres et de le transmettre comme ça:C#: Créer et passer directement variable dans la méthode appel

MethodA(new int[]) //but how to fill the array if declared here? E.g. how to declare and set string? 


MethodA(int[] Array) 
... 

et si besoin de déclarer une objet (classe avec paramètre constructeur)? Toujours possible dans la liste des paramètres?

+0

"Comment déclarer et définir une chaîne": A quoi sert la chaîne? –

+0

Désolé, je veux dire quand je veux simplement passer la chaîne en tant que paramètre. Puis-je le déclarer de cette façon? – Bornemix

Répondre

2

Vous pouvez essayer ceci:

MethodA(new int[] { 1, 2, 3, 4, 5 }); 

De cette façon, vous obtenez la fonctionnalité que vous avez demandé.

Il semble qu'il n'y ait aucun moyen de déclarer une variable dans la liste de paramètres; Cependant, vous pouvez utiliser quelques trucs habituels comme appeler une méthode qui crée et initialise la variable:

int[] prepareArray(int n) 
{ 
    int[] arr = new int[n]; 
    for (int i = 0; i < n; i++) 
     arr[i] = i; 
    return arr; 
} 

... 
MethodA(prepareArray(5)); 
... 

Avec les cordes, pourquoi ne pas utiliser simplement la chaîne littérale:

MethodB("string value"); 

?

7
MethodA(new int[] { 1, 2, 3 }); // Gives an int array pre-populated with 1,2,3 

ou

MethodA(new int[3]); // Gives an int array with 3 positions 

ou

MethodA(new int[] {}); // Gives an empty int array 

Vous pouvez faire la même chose avec des cordes, des objets, etc:

MethodB(new string[] { "Do", "Ray", "Me" }); 

MethodC(new object[] { object1, object2, object3 }); 

Si vous voulez passer une chaîne par à une méthode, voici comment vous le faites:

MethodD("Some string"); 

ou

string myString = "My string"; 
MethodD(myString); 

MISE À JOUR: Si vous voulez passer une classe par une méthode, vous pouvez faire une des opérations suivantes:

MethodE(new MyClass("Constructor Parameter")); 

ou

MyClass myClass = new MyClass("Constructor Parameter"); 
MethodE(myClass); 
0

Soit new int[0] ou new int {} fonctionnera pour vous. Vous pouvez également transmettre des valeurs, comme dans new int {1, 2, 3}. Fonctionne pour les listes et autres collections aussi.

+0

Et à propos de la chaîne? – Bornemix

+0

'new string {" chat "," dog "," horse "}' - pas de problème. Vous pouvez également regarder 'params' - vous permet de mettre un nombre arbitraire de paramètres à la fin d'une méthode, comme dans string.Format entre autres: ' public Thing DoMyThing (Chose aThing, params string [] moreArgs) ' – Lunivore

+0

Ou, en utilisant votre exemple: 'MethodA (params int [] valeurs)' pourrait être appelé par 'MyClass.MethodA (1, 2, 3, 4, 5)' – Lunivore

0

Dans votre cas, vous voulez déclarer MethodB(string[] strArray) et l'appeler comme MethodB(new string[] {"str1", "str2", "str3" })

post-scriptum Je recommanderais que vous commenciez avec un tutoriel C#, par exemple this un.

0

Voulez-vous dire simplement:

MethodA("StringValue"); ??

0

Comme une note de côté: si vous ajoutez le mot-clé params, vous pouvez simplement spécifier plusieurs paramètres et ils seront enveloppés dans un tableau automatiquement:

void PrintNumbers(params int[] nums) 
{ 
    foreach (int num in nums) Console.WriteLine(num.ToString()); 
} 

qui peut alors être appelé:

PrintNumbers(1, 2, 3, 4); // Automatically creates an array. 
PrintNumbers(new int[] { 1, 2, 3, 4 }); 
PrintNumbers(new int[4]); 
Questions connexes