Словарь с делегатом или переключателем?

Я пишу синтаксический анализатор, который вызывает некоторые функции, зависящие от некоторого значения.

Я могу реализовать эту логику с простым переключателем как это:

switch(some_val)   
{   
    case 0:   
        func0();   
        break;   
    case 1:   
        func1();   
        break;   
}     

или с делегатами и словарем как это:

delegate void some_delegate();   
Dictionary<int, some_delegate> some_dictionary = new Dictionary<int, some_delegate>();   
some_dictionary[0] = func0;   
some_dictionary[1] = func1;   

some_dictionary[some_value].Invoke();    

Действительно ли эти два метода эквивалентны и который предпочтен?

22
задан Jonathan Leffler 17 August 2012 в 19:41
поделиться