我是编程的初学者,并使用C#来学习编程。当我输入此代码时
byte[] bytes={1,2,3};
Console.WriteLine(bytes);
输出为System.Byte[]
。
这是为什么?我该如何解决?
答案 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: