5

我试图显示数组元素,但总是得到这个输出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);
    }
}
4

4 回答 4

13

你可以使用string.Join

 Console.WriteLine("Array line : "+ string.Join(",", arr));
于 2013-08-03T14:36:07.840 回答
6

您需要遍历内容并打印它们 -

Console.WriteLine("Array line: ");
for(int i=0;i<26;i++)
{
     arr[i]=i;
     Console.WriteLine(" " + arr[i]);
}

简单的打印arr将调用ToString()数组和print its type.

于 2013-08-03T14:36:55.017 回答
2

打印一个数组将调用数组的ToString()方法,它会打印类的名称,这是默认行为。为了克服这个问题,我们通常会覆盖ToString类的功能。

根据这里的讨论,我们不能覆盖 Array.ToString()反而List会有所帮助。

已经提出了简单直接的解决方案,但我希望通过将功能嵌入扩展方法(框架 3.5 或更高版本)中,让您的生活更加轻松:

public static class MyExtension
{
    public static string ArrayToString(this Array arr)
    {
        List<object> lst = new List<object>();
        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

希望你会发现它很有帮助。

注意:由于 type ,它应该适用于所有数据类型object。我已经对其中几个进行了测试

于 2013-08-04T10:25:58.110 回答
1

您正面临这个问题,因为您的线路

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

实际上是打印type of arr. 如果要打印元素值,则应使用索引号来打印值,例如

Console.WriteLine("Array line : "+arr[0]);
于 2013-08-03T14:45:44.527 回答