The '0' is not a string, it is a character, which uses ASCII encoding. The number is being multiplied with the encoding's integer id. For example, the encoding for ASCII's 'A' is 65.
import std.stdio;
int main()
{
writeln( cast(int)'A' );
writeln( 10 * 'A' );
return 0;
}
This program will print 65 and 650 because the character is being converted to an integer in both cases.
To solve the original concatenation problem you can use the '~' operator for concatenating two arrays, or use "array1 ~= array2" to append array2 onto array1 in one statement.