因为 + 可以按它前边的一个 变量来进行响应转换.这是C#中 + 的功能.s1 = "这是一个i1,d1组成的:" + i1 + d1;"这是一个i1,d1组成的:" 是一个String类型, + 就自动把后边的 i1 变成了 i1.ToString().

解决方案 »

  1.   

    因为 + 可以按它前边的一个 变量来进行响应转换.这是C#中 + 的功能.胡说八道……
    你把double放在前面试试
      

  2.   

    这是一个内部运算符变换(我找不到准确的名词),当编译器发现"+"运算符至少有一个参数类型为String的时候,便会将这个运算解释成对String.Concat方法的调用,看看String.Concat方法便会明白一切。但奇怪的是,这里并不是使用运算符重载实现的……,而是C#的编译器自动翻译,事实上重载"+"运算符能实现同样的效果且易于理解。
      

  3.   

    LS的 你可吓死俺了,你是说这样:int i1 = 123;
    double d1 = 99.1;double tmp = d1 + i1;System.Console.WriteLine(tmp.ToString ());//输出: 222.1
      

  4.   

    我的理解是 + 转换是只能支持那种 可实现的转化,例如不能把 string 转换成一个 double.
      

  5.   

    因为string对象重载了+号~~也就是暗地里偷偷给你用了double对象的ToString()方法~~
      

  6.   

    Ivony(授人以鱼不如授人以渔,上海谋生) 你说的是对的,是看至少有一个参数类型是不是String,而不是看 + 前边的. 兄弟我在这个问题上晕了.