dotnet/winforms

Icon.Save(stream) each time returns different results

Open

#8,853 建立於 2021年12月2日

在 GitHub 查看
 (13 留言) (0 反應) (0 負責人)C# (922 fork)batch import
area-System.Drawinghelp wanted

倉庫指標

Star
 (4,100 star)
PR 合併指標
 (平均合併 14天 22小時) (30 天內合併 56 個 PR)

描述

Description

We use the following code to compare two icons:

private static bool IconEquals(Icon icon1, Icon icon2) {
                var stream1 = new System.IO.MemoryStream();
                icon1.Save(stream1);
                var stream2 = new System.IO.MemoryStream();
                icon2.Save(stream2);
                return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
        }

With the net6.0 release the stream.ToArray() method each time returns different results for the same Icon. You can modify the IconEquals as follows and it will return false:

private static bool IconEquals(Icon icon1) {
                var stream1 = new System.IO.MemoryStream();
                icon1.Save(stream1);
                var stream2 = new System.IO.MemoryStream();
                icon1.Save(stream2);
                return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
        }

Reproduction Steps

Launch the following code with any Icon:

private static bool IconEquals(Icon icon1) {
                var stream1 = new System.IO.MemoryStream();
                icon1.Save(stream1);
                var stream2 = new System.IO.MemoryStream();
                icon1.Save(stream2);
                return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
        }

Expected behavior

The IconEquals method should return true.

Actual behavior

The IconEquals method returns false.

Regression?

Works on net5.0

Known Workarounds

No response

Configuration

Windows 10

Other information

No response

貢獻者指南