为什么输入"byte[]"时"System.Byte[]"来了?

  • 本文关键字:Byte 来了 System byte c#
  • 更新时间 :
  • 英文 :


我是编程初学者,使用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]);
}

最新更新