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 lst = new List(); object[] obj = new object[arr.Length]; Array.Copy(arr, obj, arr.Length); lst.AddRange(obj); return string.Join(",", lst.ToArray()); } } 

在命名空间中添加上面的代码并使用它:(示例代码)

 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 arrtype of arr 。 如果要打印元素值,则应使用索引号来打印值

 Console.WriteLine("Array line : "+arr[0]);