2009-04-16 6 views
1

私はRelayCommand例から取られたこの行ののparamパラメータの意味と使用方法を理解しようとしています:C#で "param"を使ってこの例題を得るにはどうすればいいですか?

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

まず、私が「PARAM」パラメータがで行うには何も持っていないことを理解"params"キーワードは、これが正しいですか?

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

第二に、は、デリゲートのコードのどのような私が動作するように、次の例を取得するためにを追加する必要がありますか?

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はキーワードではありません。 –

答えて

6

paramはキーワードではありません。これはサンプル中のラムダ式のパラメータです。デリゲートや式ツリーを取る必要があります。

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"; 
    } 
    } 
} 

あなたのラムダ式はどこでもparamを使用しないためFunc<int,int>が実際に任意のFunc<T,int>(またはFunc<T,long>など)である可能性があります。また、それは可能性がありExpression<Func<int,int>>など私はあなたがこれらのSOの質問のいずれかで、たとえば、詳細については、ラムダ式をよく読んでお勧め

+1

+1右のもの、これらの簡単なものでも素早く – bendewey

関連する問題