2014-10-13 2 views
0

Я преобразовываю элемент управления (Code Project CheckBoxComboBox) из C# в VB. В основном, я могу выяснить, что делает C# и записать эквивалент в VB. Однако я не смог понять эту штуку.C# to VBConversion

C# Код:

if ((Parent as Popup).ProcessResizing(ref m)) 

Что этот код пытается сделать, точно? Я знаю, что он пытается вызвать функцию ProcessResizing в классе Popup, но я не уверен в Parent as Popup.

+0

'T = X как Y' является своего рода эквивалентом' try {T = (Y) X; } catch {T = null; } ' – Mephy

+2

Что такое downvotes? –

+0

Я не уверен, почему это так, но некоторые члены StackOverflow очень раздражены любым вопросом, связанным с эквивалентами языков. –

ответ

2

Вам необходимо будет использовать DirectCast Operator (Visual Basic).

If DirectCast(Parent, Popup).ProcessResizing(m) = True Then 
// .... 
End If 
+0

Это на самом деле TryCast(). Но да, нет причин копировать ошибку :) –

+0

[TryCast хорош при использовании LINQ] (http://stackoverflow.com/questions/1297297/differences-between-vb-trycast-and-c-sharp-as-operator -когда-используя-LINQ). В соответствии с ответом Джона Скита (http://stackoverflow.com/questions/385714/why-use-trycast-instead-of-directcast), _ Если значение действительно должно быть T, то DirectCast действительно является правильным способом go ..._ –

+0

Но 'DirectCast' будет бросать, если приведение недействительно, тогда как' TryCast' просто вернет 'Nothing'. Конечно, в любом случае, будет исключение. Выбирай яд, я полагаю. –