2009-04-16 4 views
1

J'essaie de comprendre la signification et l'utilisation du param paramètre dans cette ligne tirée d'un exemple RelayCommand:Comment puis-je obtenir cet exemple en utilisant "param" en C# pour travailler?

return new RelayCommand(param => MessageBox.Show("It worked.")); 

D'abord, je comprends que le paramètre « PARAM » n'a rien à voir avec la "params" mot-clé, est-ce correct?

public int Add(params int[] list) 
{ 
    int sum = 0; 
    foreach (int i in list) 
    sum += i; 
    return sum; 
} 

Deuxièmement, quel type de code délégué dois-je ajouter pour obtenir l'exemple suivant pour travailler?

using System; 
using System.Collections.Generic; 

namespace TestParam222 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("The total is {0}.", Tools.GetTest(param => 23)); 
      Console.ReadLine(); 
     } 
    } 

    class Tools 
    { 
     public static string GetTest(List<int> integers) 
     { 
      return "ok"; 
     } 
    } 
} 
+0

param n'est pas un mot-clé. –

Répondre

6

param n'est pas un mot-clé. C'est le paramètre pour une expression lambda dans votre échantillon. Vous devez faire en sorte que votre méthode prenne un délégué ou un arbre d'expression, par ex.

using System; 
using System.Collections.Generic; 

namespace TestParam222 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     Console.WriteLine("The total is {0}.", Tools.GetTest(param => 23)); 
     Console.ReadLine(); 
    } 
    } 

    class Tools 
    { 
    public static string GetTest(Func<int, int> integers) 
    { 
     return "ok"; 
    } 
    } 
} 

Le Func<int,int> pourrait effectivement être touteFunc<T,int> (ou Func<T,long> etc) parce que votre expression lambda ne pas utiliser param partout. Sinon, il pourrait être un Expression<Func<int,int>> etc.

Je vous suggère de lire sur les expressions lambda pour plus de détails, par exemple, dans une de ces questions SO:

+1

+1 right one, vous êtes rapide sur ces faciles aussi, dang – bendewey

Questions connexes