Хитрость в том, что Cxx
«функции» в VB.NET на самом деле не являются функциями . Фактически, они больше похожи на операторы , которые компилятор переводит на то, что он определяет как преобразование типа "наилучшее совпадение".
У Пола Вика была отличная статья об этом в его блоге, но все эти страницы, похоже, уже были удалены. MSDN (что здесь в основном верно) говорит:
Эти функции скомпилированы inline, что означает, что код преобразования является частью кода, который оценивает выражение. Иногда нет вызова процедуры для выполнения преобразования, что повышает производительность. Каждая функция приводит выражение к определенному типу данных.
Доступные опции включают прямое приведение (например, (bool)var
), попытку приведения (с использованием оператора as
), вызов одного из методов, определенных в * 1019. * class , вызов соответствующего метода Type.Parse
и, возможно, некоторых других стратегий.
Прямого эквивалента в C # нет: вместо этого вы должны мыслить компилятором.
В этом случае вы почти наверняка захотите использовать соответствующую перегрузку метода Convert.ToBoolean
, поскольку этот конкретный метод будет иметь необходимую логику для преобразования значения в bool
. Прямое действие здесь не сработает.