2017-10-01 3 views
-2

まず、4つのパラメータを渡すときに何を使うべきかわからないが、戻り値はありません。例。辞書に<文字列、Func <>>を既に内部にある関数で宣言しています。C#

私はDictionary.Addを使用して関数を挿入したくないので、辞書を初期化しているときにその関数を内部に入れたいと思っています。あなたの質問を持っているようなFuncについては

Dictionary<string, Func<int, int, int, int>> types = new Dictionary<string, 
{"Linear", Func<int, int, int, int>> //idk how to write this part 
{ 
    code here 
}} 
+0

あなたは[documentation](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-a-dictionary-with)を読んだことがありますか? -a-collection-initializer)? –

+0

この辞書から呼び出すことのできるメソッドを書くのを忘れましたか?それが欠けているもの、その名前です。 –

答えて

2

、この作業をする必要があります:あなたは常にあなたの関数でreturnを持っている必要があり

var myDict = new Dictionary<string, Func<int, int, int, int>>() 
{ 
    {"Linear", (int a, int b, int c) => { return 0; } } 
}; 

注意を。

あなたは戻り値を持っていない何かをしたい場合は、あなたがFuncを使うべきではありませんが、代わりにAction:機能とは異なり

var myDict = new Dictionary<string, Action<int, int, int, int>>() 
{ 
    {"Linear", (int a, int b, int c, int d) => { } } 
}; 

、アクションは何も返しません。

Action<int, int, int, int>Func<int, int, int, int>の意味の違いに注意してください。前者では、最後のintは4番目のパラメータの型を示し、後者では戻り型を示します。

関連する問題