为什么StringWriter.ToString返回`System.Byte []`而不是数据?

the*_*ist 3 c# stream stringwriter

UnZipFile方法从写入数据inputStreamoutputWriter.为什么要sr.ToString()返回System.Byte[]而不是数据?

using (var sr = new StringWriter())
{
    UnZipFile(response.GetResponseStream(), sr);
    var content = sr.ToString();
}


public static void UnZipFile(Stream inputStream, TextWriter outputWriter)
{
    using (var zipStream = new ZipInputStream(inputStream))
    {
        ZipEntry currentEntry;
        if ((currentEntry = zipStream.GetNextEntry()) != null)
        {
            var size = 2048;
            var data = new byte[size];
            while (true)
            {
                size = zipStream.Read(data, 0, size);
                if (size > 0)
                {
                    outputWriter.Write(data);                       
                }
                else
                {
                    break;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*sse 5

问题在于:

outputWriter.Write(data); 
Run Code Online (Sandbox Code Playgroud)

StringWriter.Write没有超负荷期待byte[].因此,Write(Object)被称为.并根据MSDN:

通过调用该对象上的ToString方法,将对象的文本表示写入文本字符串或流.

调用ToString一个字节数组返回System.byte[],解释如何在你的字符串中获取该字符串StringWriter.