Вы не заказываете - вы используете оператора as
. Если вместо этого фактически литая, я подозреваю, вы получите исключение:
var student = (Students) o;
я подозреваю, вы на самом деле есть несколько типов, называемых Students
, и если вы действительно бросили вместо использования as
вы увидите фактический тип.
Например:
using System;
namespace Bad
{
class Students {}
class Test
{
static void Main()
{
object o = new Good.Students();
Students cast = (Students) o;
}
}
}
namespace Good
{
class Students {}
}
Это приводит к:
Unhandled Exception: System.InvalidCastException:
Unable to cast object of type 'Good.Students' to type 'Bad.Students'.
at Bad.Test.Main()
Обратите внимание, как вы получаете полностью квалифицированные имена типов в исключения.
В общем, это плохая идея использовать as
, если вы действительно ожидать, что объект не может быть правильного типа, и обычно вы проверить, что после этого. См. my blog post on the topic для более подробной информации.
Студенты? во множественном числе? – Steve
http://stackoverflow.com/questions/132445/direct-casting-vs-as-operator –