C# & VB6: How to convert 'with' statement to C#?
You haven't shown the EventThief
code, which makes it impossible to tell, really. But in general:
With expression
.Foo = a
.Bar = b
End With
would translate to
var x = expression;
x.Foo = a;
x.Bar = b;
(Of course you can specify the type explicitly...)
The commonality here is that expression
is only evaluated once. In the particular code you showed, there's no need for an extra variable of course, as the expression is only the local variable in the first place.
Your actual error looks like it's just to do with the types of EventThief.RIGHT_DOWN
etc rather than with the WITH statement.
EDIT: Okay, you've now shown the original EventThief code which does use Booleans... but you haven't shown your ported EventThief
code. You wrote:
It says et.LEFT_UP is a short
... but it shouldn't be. In the original it's a Boolean
, so why is it a short
in your port?
The following in VB
With EventStealingInfo
.RIGHT_DOWN = True
.RIGHT_UP = True
End With
can be roughly translated to
var EventStealingInfo = new EventThief(){
RIGHT_DOWN = true,
RIGHT_UP = true
};
where RIGHT_UP
and RIGHT_DOWN
are public properties in the EventStealingInfo
class.
This construct in C# is known as Object Initializer.
Like so
With EventStealingInfo
.RIGHT_DOWN = True
.RIGHT_UP = True
End With
becomes
EventStealingInfo.RIGHT_DOWN = true;
EventStealingInfo.RIGHT_UP = true;