diff --git a/src/Avalonia.Visuals/Media/DashStyle.cs b/src/Avalonia.Visuals/Media/DashStyle.cs index bd81cb1d03..4ae2285dfd 100644 --- a/src/Avalonia.Visuals/Media/DashStyle.cs +++ b/src/Avalonia.Visuals/Media/DashStyle.cs @@ -136,17 +136,7 @@ namespace Avalonia.Media return false; } - if (ReferenceEquals(a.Dashes, b.Dashes)) - { - return true; - } - - if ((a.Dashes is null && !(b.Dashes is null)) || (b.Dashes is null && !(a.Dashes is null))) - { - return false; - } - - return a.Dashes.SequenceEqual(b.Dashes); + return SequenceEqual(a.Dashes, b.Dashes); } internal static int GetHashCode(IDashStyle style) @@ -164,5 +154,28 @@ namespace Avalonia.Media return hashCode; } + + private static bool SequenceEqual(IReadOnlyList left, IReadOnlyList right) + { + if (left == right) + { + return true; + } + + if (left == null || right == null || left.Count != right.Count) + { + return false; + } + + for (var c = 0; c < left.Count; c++) + { + if (left[c] != right[c]) + { + return false; + } + } + + return true; + } } }