C# 在初始化C时将参数传递给字典中的操作#

C# 在初始化C时将参数传递给字典中的操作#,c#,dictionary,delegates,arguments,action,C#,Dictionary,Delegates,Arguments,Action,我有一个字典,它以KeyCode作为键,以Action作为值,但是我想在初始化字典时给出Action参数,如下所示: someDictionary = new Dictionary<KeyCode, Action<int>>() { {KeyCode.Alpha1, GoToCameraPosition(0) }, }; someDictionary=newdictionary() { {KeyCode.Alpha1,GoToCa

我有一个
字典
,它以
KeyCode
作为键,以
Action
作为值,但是我想在初始化字典时给出
Action
参数,如下所示:

    someDictionary = new Dictionary<KeyCode, Action<int>>()
    {
        {KeyCode.Alpha1, GoToCameraPosition(0) },
    };
someDictionary=newdictionary()
{
{KeyCode.Alpha1,GoToCameraPosition(0)},
};
我该怎么做呢?

这叫做。请注意,
字典
的第二个类型参数与原始类型参数不同:您创建的操作没有参数,因为它调用的操作的参数内置在字典中存储的匿名lambda中

someDictionary = new Dictionary<KeyCode, Action>()
{
    {KeyCode.Alpha1, () => GoToCameraPosition(0) },
};

或者,如果你确定它在那里

someDictionary[KeyCode.Alpha1]();
这就是所谓的。请注意,
字典
的第二个类型参数与原始类型参数不同:您创建的操作没有参数,因为它调用的操作的参数内置在字典中存储的匿名lambda中

someDictionary = new Dictionary<KeyCode, Action>()
{
    {KeyCode.Alpha1, () => GoToCameraPosition(0) },
};

或者,如果你确定它在那里

someDictionary[KeyCode.Alpha1]();

如果您使用的是C#6,那么字典中有一个(imo)更漂亮的初始值设定项一个问题我不能只做
Value.Invoke()
?@GeekCodingMaster您的意思是如果您在字典中循环使用KeyValuePairs?是的,但是您不需要
Invoke()
<代码>someDictionary.Values.First()works,或
foreach(someDictionary中的var-kvp)kvp.Value()我的意思是,如果愿意,可以使用
Invoke()
。但是没有必要。如果你使用C#6,字典中有一个(imo)更漂亮的初始值设定项一个问题我不能只做
Value.Invoke()
?@GeekCodingMaster你的意思是如果你在字典中循环键值对吗?是的,但是您不需要
Invoke()
<代码>someDictionary.Values.First()
works,或
foreach(someDictionary中的var-kvp)kvp.Value()我的意思是,如果愿意,可以使用
Invoke()
。但是没有必要。