Вы должны быть осторожны при использовании приведения, если вы не знаете тип объекта заранее. Помните, что приведение действительно только в отношениях «есть». Для всего остального вам нужно сделать конвертацию.
Например:
если у вас есть
class Truck : Automobile
и
class Car : Automobile
Тогда
Automobile truck = new Truck();
Truck refoftruck = (Truck)truck; //correct usage;
Car badrefofTruck = (Car)truck; //will not work;
Хотя автомобиль действительно является автомобилем (тип грузовика объекта), он также не грузовик, поэтому актерский состав не будет работать. Чтобы перейти от грузовика к машине, вам нужно написать какое-то обращение.
То же самое верно для объекта и int. Хотя почти все наследуется от объекта, они могут расходиться дальше по цепочке наследования. Вы не знаете, какой тип объекта, поэтому вы не знаете, является ли он int, string, double и т. Д.
Таким образом, актеры в этой ситуации обычно плохая идея. Все приведения должны быть вверх или вниз по цепочке наследования.
Чтобы преобразовать строку в int (обратите внимание на слово Convert not cast), вы должны использовать:
Convert.ToInt32(strObject.ToString());
Надеюсь, это поможет и прояснит. Конечно, перед выполнением преобразования вам, вероятно, нужно проверить, что объект не равен нулю.