У меня есть словарь, в котором хранятся различные типы переменных (string, double, int и т. Д.), Они хранятся как объекты.
У меня есть универсальный метод Set и универсальный метод get.
private static Dictionary<int, object> dict = new Dictionary<int, object>();
public static void Set<T>(int key, object value)
{
dict.Add(key, (T)value);
}
public static T Get<T>(int key)
{
dict.TryGetValue(key, out object value);
return (T)value;
}
static void Main(string[] args)
{
Set<int>(1, 100);
Get<double>(1);
}
В Main я пытаюсь сохранить переменную 100 как целое число, которое работает, оно сохраняется «как объект» в словаре.Теперь при попытке получить переменную, приведя ее к удвоению, генерируется исключение IllegalCastException, но почему?Доступно явное приведение от объекта к двойному, а также явное приведение от int к двойному.