System.Int32 显示而不是数组元素
我试图显示数组元素,但总是得到这个输出System.Int32[]
而不是整数元素。
using System.IO; using System; class Test { public static void Main() { int[] arr=new int [26]; for(int i = 0; i < 26; i++) arr[i] = i; Console.WriteLine("Array line : "+arr); } }
你可以使用string.Join
Console.WriteLine("Array line : "+ string.Join(",", arr));
您需要遍历内容并打印它们 –
Console.WriteLine("Array line: "); for(int i=0;i<26;i++) { arr[i]=i; Console.WriteLine(" " + arr[i]); }
只需打印arr
就会在数组上调用ToString()
并print its type
。
打印数组将调用数组的ToString()
方法,它将打印类的名称,这是默认行为。 为了克服这个问题,我们通常会覆盖类的ToString
函数。
根据这里的讨论, 我们不能覆盖Array.ToString()而不是List
可能会有所帮助。
已经提出了简单直接的解决方案,但我希望通过在扩展方法 (框架3.5或更高版本)中嵌入function来使您的生活更加轻松:
public static class MyExtension { public static string ArrayToString(this Array arr) { List
在命名空间中添加上面的代码并使用它:(示例代码)
float[] arr = new float[26]; for (int i = 0; i < 26; i++) arr[i] = Convert.ToSingle(i + 0.5); string str = arr.ArrayToString(); Debug.Print(str); // See output window
希望你会发现它非常有帮助。
注意:由于类型object
它应该适用于所有数据类型。 我已经对其中的一些进行了测试
你正面临这个问题,因为你的线路
Console.WriteLine("Array line : "+arr);
实际上是打印type of arr
的type of arr
。 如果要打印元素值,则应使用索引号来打印值
Console.WriteLine("Array line : "+arr[0]);