Тонкости синтаксиса C#. Приведение типов
Формулировка задачи:
Привет всем. Ну никак я не могу привыкнуть к этому C#. Постоянно какие-то ошибки там, где они не должны быть.
Вообщем есть словарь Что за бред вообще? Почему приведение в одном случае работает, а в другом нет. Я уже честно задолбался...
P.S. Да и кстати, можно что-нибудь придумать с тем, чтобы мне не писать +100500 методов Invoke(...) для разного количества параметров делегата? Как в C++ к примеру:
private SortedDictionary<int, Delegate> events;
, мне нужно вызвать делегат по определенному ключу.
Пишу:
public void Invoke<T>( string eventName, T param1 ) { int hash = eventName.GetHashCode(); Delegate d = null; if( events.TryGetValue( hash, out d ) ) { //(Action<T>)events[hash](param1); // Почему бл... так не работает Action<T> act = d as Action<T>; // А так работает act( param1 ); } }
template<typename... Args> void Invoke( string eventName, Args... arg ) { ... events[hash]( std :: forward<Args>( arg )... ); }
Решение задачи: «Тонкости синтаксиса C#. Приведение типов»
textual
Листинг программы
(Action<T>)events[hash](param1); // Почему бл... так не работает
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д