Hello,
I think this is the expected behavior. What that code actually does is:
Console.WriteLine (
cad1.Equals(cad2) + ",", // first argument
+ cad2.Equals(cad3) + "," + cad1.Equals(cad3)); // second argument
The second + is interpreted as an unary operator and thus it is correct
behavior of Console.WriteLine (since there is no {0} in the first
argument, the second argument is just ignored).
unary plus operator associated to System.String is not a violation
of C# specification. Note that any object can overload unary + operator.
Atsushi Eno
> Hello!
>
> Look for the comma ',' inserted in the code I append
> (just next "cad1.Equals(cad2) +" in the seventh line).
> I think it should be a parser error, shouldn't be? But the compiler
> doesn't complain at all. The result with the comma is:
>
> False,
>
> and without the comma
>
> False,False,True
>
> I have probed this with mcs 1.1.8 and gmcs 1.1.5. The same output.
>
> <code>
> using System;
> class X {
> static void Main () {
> string cad1 = "hello1";
> string cad2 = "bye";
> string cad3 = "hello1";
> Console.WriteLine (cad1.Equals(cad2) + ",", + cad2.Equals(cad3)
> + "," +
> cad1.Equals(cad3));
> }
> }
> </code>
>
> Thank you!
> --
> Antonio Martínez
> _______________________________________________
> Mono-list maillist - [email protected]
> http://lists.ximian.com/mailman/listinfo/mono-list
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list