gpt4 book ai didi

c# - 如何比较 SolidColorBrushes?

转载 作者:行者123 更新时间:2023-11-30 14:28:50 25 4
gpt4 key购买 nike

我正在尝试比较 2 支画笔,如您在图片中所见。我不知道为什么它会失败......

Equal Fail

最佳答案

它们不会相等,因为它正在进行引用比较,并且它们是堆中具有相同属性的两个不同引用。

如果你想控制对象比较,你应该实现IEqualtable接口(interface)。然后你可以说出必须如何比较对象。然而,在这种情况下,由于 SolidColorBrush 是一个 .NET 类,我们无法实现 IEquatable。有不同的选择

1) 在 SolidColorBrush 上使用扩展方法,将画笔实例与另一个进行比较。虽然在这种情况下不是一个很好的解决方案。

2) 最好的办法可能是使用 IEqualityComparer 接口(interface)。您创建一个单独的类来实现 IEqualityComparer,它将定义如何比较 2 个不同的对象。例如,在您的示例中,您可能想要比较 SolidColorBrush 的颜色和不透明度:

public class SolidColorBrushComparer : IEqualityComparer<SolidColorBrush>
{
public bool Equals(SolidColorBrush x, SolidColorBrush y)
{
return x.Color == y.Color &&
x.Opacity == y.Opacity;
}

public int GetHashCode(SolidColorBrush obj)
{
return new { C = obj.Color, O = obj.Opacity }.GetHashCode();
}
}

然后比较您只需执行以下操作:

SolidColorBrush otherBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFEFEEEE"));
SolidColorBrush backgroundBrush = (SolidColorBrush)grd.Background;

if(new SolidColorBrushComparer().Equals(backgroundBrush, otherBrush))
{
// They're equal, Yay!
}

关于c# - 如何比较 SolidColorBrushes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com