输入“byte []”时为什么会出现“System.Byte []”?

时间:2018-05-15 02:24:28

标签: c#

我是编程的初学者,并使用C#来学习编程。当我输入此代码时

byte[] bytes={1,2,3}; Console.WriteLine(bytes);

输出为System.Byte[]。 这是为什么?我该如何解决?

6 个答案:

答案 0 :(得分:3)

foreach (byte b in bytes)
{
    Console.WriteLine(b);
}

迭代 - 重复流程或话语。

答案 1 :(得分:2)

根据您帖子中删除的评论,您需要迭代每个字节以获取值。实际上,当您尝试打印数组而不是它的元素时,您只需打印出类型。

lxml

我认为@Aquaballin打败了我;我们甚至使用类似的迭代方法! :d

答案 2 :(得分:2)

控制台正在写出字节数组的字符串值,即" System.Byte []"。

您需要单独打印字节数组中的每个项目,最简单的方法就是这样:

foreach(Byte item in bytes)
{
    Console.WriteLine(item));
}

答案 3 :(得分:2)

Console.WriteLine通常需要一个字符串。如果作为参数传入的值或对象具有不同的时间,则它将通过调用其.ToString()方法将值或对象内部转换为字符串。任何数组类型的.ToString方法只返回类型名称,而不是其内容。您可能想要打印出阵列的内容。 @ Aquaballin的回答几乎就是你想要完成的,除了多余的换行符。我还会添加一些逗号作为分隔符。

foreach (byte b in bytes)
{
    Console.Write(b);
}
Console.WriteLine();

答案 4 :(得分:2)

Console.WriteLine(obj)隐式调用传递参数的ToString方法。对于System.Byte [](又名:byte [])类型,ToString方法最终由System.Object基类实现。该方法的代码(通过ILSpy)是:

public virtual string ToString()
{
    return GetType().ToString();
}

这将读取类型信息并在类型对象本身上调用ToString,它只返回该类型的名称。

正如其他人已经回答的那样,为了获得数组中项目的列表,您需要调用某种类型的枚举器。 C#有许多不同的方法,最好的选择取决于你的最终目标。

答案 5 :(得分:1)

你错过了迭代

xsd: