views:

200

answers:

3

Is it possible in VB.NET doing a = b = 5? (I know that = is a comparison operator too)

I mean do not result (if b = 2 by e.g.)

a = false
b = 2

HOW to do it, however, in situations like bellow?


The inconvenient caused this question in my code: some objects a, b, .. z are passed by ref in a method, if I don't initialize them compiler warns me that it shoudl be initialized(= Nothing by e.g.)

Dim a, b, c, d, z As GraphicsPath ' = Nothing is impossible, only each a part
DrawPaths(a, b, c, d, z)          ' DrawPaths sets a = new GraphicPath() etc. 
+4  A: 

Because = in VB/VB.NET is also a comparison operator, so in that context it returns a boolean.

Will Vousden
ok, see my edit, any recommendation for my situation?
serhio
I think you'll just have to do it the long way and assign them all individually.
Will Vousden
so, I suppose, the answer to "impossible?" is "Yes, impossible"?
serhio
Yes, that's right.
Will Vousden
+2  A: 

That's just the rules of the Basic language. Many languages uses different operators to distinguish between assingment and equality testing. (For example, C/C++/C#/Java uses "=" and "==" - Pascal uses ":=" and "="). Basic does not.

danbystrom
so, I suppose, the answer to "impossible?" is "Yes, impossible"?
serhio
+1  A: 

a = b = 5 means

if b = 5 then a = true else a = false

if you want to assign the value 5 to a and to b at the same time, you must add it on a separate line :

b = 5
a = b

you can also write them on the same line but using the vb.net line separator :

b = 5 : a = b
Microgen
+1 for the `:` line separator
serhio