黑马程序员技术交流社区

标题: 为什么string类型的可以直接用数组名进行占位符的替换,... [打印本页]

作者: 周培    时间: 2013-8-20 13:02
标题: 为什么string类型的可以直接用数组名进行占位符的替换,...
  1. int[] nums = { 1, 2, 3 };
  2. string[] strs = { "aa", "bb", "cc" };
  3. Console.WriteLine("{0},{1},{2}", nums[0], nums[1], nums[2]);
  4. Console.WriteLine("{0},{1},{2}", nums);//出现异常

  5. Console.WriteLine("{0},{1},{2}", strs[0], strs[1], strs[2]);
  6. Console.WriteLine("{0},{1},{2}", strs);
复制代码

作者: 胡盼盼    时间: 2013-8-20 13:54
使用占位符不容易出错,占位符是从0开始的,之所以可以用数组名代替,是因为数组的下标是与数组的值是对应的。对与数组来说,若只写数组名,它会默认把整个数组里面的元素都输出来。如下图










作者: 瞎猫馒头米田共    时间: 2013-8-20 15:26
因为无法将int[]类型转换为object[]类型。
作者: 瞎猫馒头米田共    时间: 2013-8-20 15:28
就是说方法要一个object[]参数,你是无法给他传入int[]参数的
作者: 瞎猫馒头米田共    时间: 2013-8-20 15:41
你可以反编译看看是不是数组里头是不是有一个implicit operator 的隐式类型转换把 string[]l里头遍历的每个元素都转为obect然后在 return 一个object[];而没有对int[]的隐式类型转换




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2