Первое, что нужно отметить, - это то, что VB.NET не имеет прямого аналога механизма приведения (type)instance
в C #. Я поднял это, потому что это полезно использовать в качестве отправной точки при сравнении двух операторов VB.NET (и они являются операторами, а не функциями, даже если они имеют семантику функций).
DirectCast()
более строг, чем оператор приведения в C #. Он позволяет вам разыгрывать только тогда, когда разыгрываемый предмет имеет тип того типа, который вы разыгрываете. Это не сделает никакого преобразования. Так, например, вы не можете приводить от короткого к int, как вы могли бы с C # (int)
приведением. Но вы можете преобразовать IEnumerable в массив, если ваша базовая переменная объекта IEnumerable
действительно является Array
. И, конечно, вы можете привести объект из Object к чему угодно, предполагая, что тип вашего экземпляра объекта действительно находится где-то ниже вашего типа преобразования в дереве наследования.
Это желательно, потому что это делает быстрее . Требуется немного меньше преобразования и проверки типов.
CType()
менее строг, чем оператор приведения в C #. Он будет выполнять конвертацию строки в целое число, которое вы не можете просто выполнить простым приведением (int)
. Он обладает такой же мощью, как и вызов Convert.To___()
в C #, где ___ - это тип цели вашего персонажа. Это желательно, потому что это очень мощно, но эта мощность достигается за счет производительности & mdash; это не так быстро, как DirectCast () или оператор приведения C #, потому что для завершения приведения может потребоваться много работы.
Обычно вы предпочитаете DirectCast()
, когда можете.
Наконец, вы пропустили один оператор приведения: TryCast()
, который является прямым аналогом оператора as
в C #.