
2009/9/22 Masklinn <masklinn@masklinn.net>
On 22 Sep 2009, at 22:37 , Michael Foord wrote:
C# will not allow you to add strings to numbers, this is nonsense.
I fear you're wrong. In C#, the operation `"foo " + 3` is perfectly legal and returns `"foo 3"` (and the integer can, of course, be the left hand of the operator). No need for a ToString, that's implicit.
Heh, you're right. How very odd. Michael
In fact, this is quite clearly specified in the C# language specification §7.4.4. "The addition operator" (http://msdn.microsoft.com/en-us/library/aa691375.aspx):
The binary + operator performs string concatenation when one or both operands are of type string. If an operand of string concatenation is null, an empty string is substituted. Otherwise, any non-string argument is converted to its string representation by invoking the virtual ToString method inherited from type object. If ToString returns null, an empty string is substituted.
using System; class Test { static void Main() { string s = null; Console.WriteLine("s = >" + s + "<"); // displays s = >< int i = 1; Console.WriteLine("i = " + i); // displays i = 1 float f = 1.2300E+15F; Console.WriteLine("f = " + f); // displays f = 1.23+E15 decimal d = 2.900m; Console.WriteLine("d = " + d); // displays d = 2.900 } }
If you call ToString() then this is an explicit operation to produce a string representation - and it is this string that you add. It is *not* at all the same as adding arbitrary objects on strings. You can't compile a C# program that attempts to add strings and numbers.
You might have wanted to test out this theory.
I'm also pretty sure you can't override the default behavior on integers
etc (C# does have operator overloading but doesn't allow you to redefine operators on the fundamental types - Java doesn't even have operator overloading).
Java somewhat does, since "+" is overloaded on String. What Java doesn't provide is user-defined operator overloading.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org http://mail.python.org/mailman/listinfo/python-ideas