Вы не показали код EventThief
, что делает невозможным его на самом деле узнать. Но в целом:
With expression
.Foo = a
.Bar = b
End With
будет переводиться на
var x = expression;
x.Foo = a;
x.Bar = b;
(Конечно, вы можете указать тип явно ...)
Общность здесь в том, что expression
оценивается только один раз. В конкретном коде, который вы показали, дополнительная переменная, разумеется, не нужна, поскольку выражение только локальная переменная в первую очередь.
Ваша настоящая ошибка выглядит так, как будто она связана с типами EventThief.RIGHT_DOWN
и т. Д., А не с оператором WITH.
РЕДАКТИРОВАТЬ: Хорошо, теперь вы показали оригинальный код EventThief, который использует использует логические значения ... но вы не показали свой портированный EventThief
код. Вы написали:
Там написано, что et.LEFT_UP - короткий
... но так не должно быть. В оригинале это Boolean
, так почему же это short
в вашем порту?