簡體   English   中英

輸入“byte []”時為什么會出現“System.Byte []”?

[英]Why is “System.Byte[]” coming when “byte[]” is entered?

我是編程的初學者,使用C#來學習編程。 當我輸入此代碼時

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

輸出是System.Byte[] 這是為什么? 我該如何解決?

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

迭代 - 過程或話語的重復。

根據您帖子中刪除的評論,您需要迭代每個字節以獲取值。 實際上,當您嘗試打印數組而不是它的元素時,您只是打印出類型。

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通常需要一個字符串。 如果作為參數傳入的值或對象具有不同的時間,則它將通過調用其.ToString()方法將值或對象內部轉換為字符串。 任何數組類型的.ToString方法只返回類型名稱,而不是其內容。 您可能想要打印出陣列的內容。 @ Aquaballin的回答幾乎就是你想要完成的,除了多余的換行符。 我還會添加一些逗號作為分隔符。

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

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]);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM