这个问题涵盖了字典中动作的使用。我想做类似的事情,但每个操作有多个方法:
static readonly Dictionary<char, Action[]> morseDictionary = new Dictionary<char,Action[]>
{
{ 'a', new Action[] {dot, dash} },
{ 'b', new Action[] {dash, dot, dot, dot} },
{ 'c', new Action[] {dash, dot, dash, dot} },
{ 'd', new Action[] {dash, dot, dot} },
{ 'e', new Action[] {dot} }
// etc
};
dot
并dash
参考这些私有函数:
private static void dash(){
Console.Beep(300, timeUnit*3);
}
private static void dot(){
Console.Beep(300, timeUnit);
}
我还有另一个函数 ,morseThis
它旨在将消息字符串转换为音频输出:
private static void morseThis(string message){
char[] messageComponents = message.ToCharArray();
if (morseDictionary.ContainsKey(messageComponents[i])){
Action[] currentMorseArray = morseDictionary[messageComponents[i]];
Console.WriteLine(currentMorseArray); // prints "System.Action[]"
}
}
在上面的示例中,我能够为输入消息中包含的每个字母将“System.Action[]”打印到控制台。但是,我的意图是currentMorseArray
按顺序调用其中的方法。
如何访问字典中给定 Action[] 中包含的方法?