黑马程序员技术交流社区
标题:
数组反转问题。。。。
[打印本页]
作者:
维纳斯之叶
时间:
2012-11-10 10:28
标题:
数组反转问题。。。。
本帖最后由 维纳斯之叶 于 2012-11-17 08:21 编辑
string str = "Chinese";
char[] ch = str.ToCharArray();
Array.Reverse(ch);
Console.WriteLine(ch);//输出esenihC
为什么字符数组不需要经过遍历,直接就能输出内容?String或Int类型的数组经过翻转后必须经过遍历才能输出内容,直接输出却会出错??
int[] intStr = { 1, 2, 3, 4, 5, 6, 7 };
Array.Reverse(intStr);
Console.WriteLine(intStr);//得到的是System.Int32[],为什么?
int[] intStr = { 1, 2, 3, 4, 5, 6, 7 };
Array.Reverse(intStr);
for (int i = 0; i < intStr.Length; i++)
{
Console.WriteLine(intStr
);
}
为什么这样遍历以后才能正确输出翻转后的值??求解。。。。
作者:
王继光
时间:
2012-11-10 10:41
必须遍历str才能输入翻转后的结果(int的同理),不知道为什么Console.WriteLine(str);得到的结果是System.String[],继续关注。。。
关于上面的问题,是因为 Console.WriteLine() 或者 Console.Write() 输出的是一个对象 的 ToString()结果
比如:
int i =10;
Console.Write(i); 此时输出的是 i 变量的 ToString() 结果
同样,放在 数组对象 里,
string[] strs = {"hello","hi","world"};
Console.Write(strs); 此时输出的是 strs.ToString()结果,也就是 System.String[] ,因为strs是一个对象,不是数组的元素,所以并不会输出数组的元素
要想输出数组元素,还是得遍历输出元素。这就是为什么 遍历的时候我们 Console.Write(strs[i]) 参数里得填strs[i] 的原因
作者:
郑昱曦
时间:
2012-11-10 11:22
这是因为Console中有WriteLine(char[])的方法,但是没有WriteLine(int[])、WriteLine(string[])方法,这时会调用WriteLine(object)方法,此方法会将object.ToString(),于是就产生了“System.Int32[]”和“System.String[]”的结果
作者:
王继光
时间:
2012-11-10 11:28
同意楼上的意见
再补充一点: 其实 Console.WriteLinme(char[]) 经反编译得知 最后的关键代码如下
for (int i = 0; i < count; i++)
{
this.Write(buffer[index + i]);
}
其实 内部还是实现的循环,, 调用了 Console.Write() 方法 参数还是 数组的元素
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2