System.Int32 []显示而不是Array元素

时间:2013-08-03 14:34:35

标签: c# arrays

我正在尝试显示数组元素但始终获取此输出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 个答案:

答案 0 :(得分:10)

您可以使用string.Join

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

答案 1 :(得分:6)

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

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

只需打印arr即可在数组和ToString()上调用print its type

答案 2 :(得分:2)

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

根据此处的讨论we can not override Array.ToString()而不是List可能会有所帮助。

已经提出了简单直接的解决方案,但我希望通过在Extension Methods(框架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

希望你会发现它非常有用。

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

答案 3 :(得分:1)

您遇到此问题,因为您的行

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

实际上正在打印type of arr。如果要打印元素值,则应使用索引号打印值,如

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