C# gzip内容不';不能反映输入

C# gzip内容不';不能反映输入,c#,gzip,C#,Gzip,我有一个非常简单的gzip方法: public byte[] Compress(string input) { var bytes = Encoding.UTF8.GetBytes(input); using (var msi = new MemoryStream(bytes)) using (var mso = new MemoryStream()) using (var gz = new GZipStream(

我有一个非常简单的gzip方法:

    public byte[] Compress(string input)
    {
        var bytes = Encoding.UTF8.GetBytes(input);

        using (var msi = new MemoryStream(bytes))
        using (var mso = new MemoryStream())
        using (var gz = new GZipStream(mso, CompressionMode.Compress))
        {
            msi.CopyTo(gz);

            return mso.ToArray();
        }
    }
然而,单元测试失败了。即使传入一个简单的短字符串也不能正确地进行gzip。e、 g.
“这是一个测试”
变成了一个包含10个元素的字节数组:
[31139,8,0,0,0,0,4,0]
当然不能正确解压缩。这里怎么了?这是直接来自msdn

您需要刷新并关闭流,以便对其进行压缩。在调用
mso.ToArray()
时,
GZipStream
尚未压缩任何内容,正在等待更多数据

一个简单的解决方案:

public byte[] Compress(string input)
{
    var bytes = Encoding.UTF8.GetBytes(input);

    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream())
    {
        using (var gz = new GZipStream(mso, CompressionMode.Compress))
        {
            msi.CopyTo(gz);
        }

        return mso.ToArray();
    }
}

可能是重复的啊,那肯定是一个陷阱!谢谢