我是编程初学者,使用C#学习编程。当我输入此代码时
byte[] bytes={1,2,3};
Console.WriteLine(bytes);
输出为System.Byte[]
。 为什么?我该如何解决它?
foreach (byte b in bytes)
{
Console.WriteLine(b);
}
迭代- 过程或话语的重复。
Console.WriteLine 通常需要一个字符串。如果作为参数传入的值或对象是不同类型的,它将通过调用其 .ToString(( 方法。这。任何数组类型的 ToString 方法将只返回类型名称,而不返回其内容。您可能想要打印出数组的内容。@Aquaballin的答案几乎是你试图完成的,除了多余的换行符。我还将添加一些逗号作为分隔符。
foreach (byte b in bytes)
{
Console.Write(b);
}
Console.WriteLine();
根据帖子上已删除的评论,您需要遍历每个字节才能获得值。实际上,当您尝试打印数组时,您只需打印出类型,而不是元素。
byte[] bytes = { 1, 2, 3 };
foreach(byte b in bytes)
{
Console.Write(b);
}
我认为@Aquaballin打败了我;我们甚至使用类似的迭代方法! :D
控制台正在写出字节数组的字符串值,即"System.Byte[]"。
您需要单独打印出 Byte 数组中的每个项目,最简单的方法是这样完成的:
foreach(Byte item in bytes)
{
Console.WriteLine(item));
}
Console.WriteLine(obj)
对传递的参数隐式调用 ToString 方法。对于 System.Byte[](又名:byte[](类型,ToString 方法最终由 System.Object 基类实现。该方法的代码(通过 ILSpy(为:
public virtual string ToString()
{
return GetType().ToString();
}
这将读取类型信息并在类型对象本身上调用 ToString,该对象仅返回类型的名称。
正如其他人所回答的那样,为了获得数组中项目的列表,您需要调用某种枚举器。C# 中有许多不同的方法,最佳选择取决于您的最终目标。
你错过了迭代
for (int i = 0; i < bytes.Length; i++)
{
Console.WriteLine(bytes[i]);
}