Я предполагаю, что ваш индексный указатель строк не string
. Литая выглядит следующим образом:
(TypeA)objB
Это только успешным, когда
objB
имеет тип TypeA
,
objB
имеет тип TypeC
где TypeC
является подклассом TypeA
,
objB
i с типа TypeC
, где TypeC
является суперклассом TypeA
, а тип объявления objB - TypeA
.
Таким образом, ваш код не работает.
Однако, поскольку каждый тип является производным от священного Object
класса, каждый тип имеет метод ToString
. Таким образом, независимо от типа Rows[0]["Id"]
, он имеет или не имеет специальной реализации метода ToString
. Тип возвращаемого значения метода ToString
всегда, как вы уже догадались, String
. Вот почему работает ToString
.
Связанный: http://stackoverflow.com/q/1565100/447156 и http://stackoverflow.com/q/4152205/447156 –
'CAST' и' Convert' - это две разные концепции. –
Обратите внимание, что метод '.ToString' предназначен для всех объектов. он может вернуть имя объекта, а не свойство ('id'), которое вы хотите. –