Таким образом, я просто изучаю C# и столкнулся с чем-то, что я нахожу нечетными... Я играю с делегатами и имею, создает делегата DelegateReturnsInt. Теперь, Когда я использую цикл foreach, книжные шоу для использования его как это:
foreach(DelegateReturnsInt del in theDelegate.getInvocationList())
теперь я знаю, что getInvocationList () возвращает Массив Делегата [], но как он преобразовывает их в DelegateReturnsInt? Я спрашиваю, потому что я хотел просто играть вокруг и изменить его от foreach до для цикла, таким образом, я создал это
Delegate[] del = theDelegate.GetInvocationList();
for(int i = 0; i < del.Length; i++){
int result = del[i]();
но это не рассматривает del [я] как метод. Я попытался бросить в DelegateReturnsInt и такой, но он дает мне обдумывавший ошибки типа, не определяющие его.
Мой большой вопрос - то, что делает foreach () настолько особенным?
Он выполняет неявное приведение (если вы посмотрите на испускаемый IL, вы увидите это). Это также означает, что вы можете получить неожиданное исключение приведения в этой строке, если это не то, что вы говорите.