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()
。但是没有必要。