Тонкости синтаксиса 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); // Почему бл... так не работает
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д