Тонкости синтаксиса 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); // Почему бл... так не работает