C # эквивалентно VC.NET DirectCast?
Есть ли в C # эквивалент DirectCast VB.NET?
Я знаю, что он имеет () приведения и ключевое слово «как», но они соответствуют CType и TryCast.
Чтобы было понятно, эти ключевые слова делают следующее;
CType / () приведениеЕсли это уже правильный тип, приведите его, в противном случае ищите конвертер типов и вызывайте его. Если преобразователь типов не найден, создайте исключение InvalidCastException.
TryCast / "как" ключевое слово: Если это правильный тип, приведите его, иначе верните ноль.
DirectCast: Если это правильный тип, приведите его, в противном случае создайте исключение InvalidCastException.
После того, как я изложил вышеизложенное, некоторые люди все еще ответили, что () эквивалентно, поэтому я более подробно остановлюсь на том, почему это не так.
DirectCast допускает только сужающие или расширяющие преобразования в дереве наследования. Он не поддерживает преобразования в разных ветвях, как (), т.е.
C # - это компилирует и запускает:
//This code uses a type converter to go across an inheritance tree
double d = 10;
int i = (int)d;
VB.NET - это не скомпилировано
'Direct cast can only go up or down a branch, never across to a different one.
Dim d As Double = 10
Dim i As Integer = DirectCast(d, Integer)
В VB.NET мой код на C # эквивалентен CType:
'This compiles and runs
Dim d As Double = 10
Dim i As Integer = CType(d, Integer)