gpt4 book ai didi

c# - 为什么这个带有 #00FFFFFF 值的 Brush 不等于 Brushes.Transparent?

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

我正在通过另一个类的反射检索画笔列表。我想确保此列表中的某些画笔是透明的 (#00FFFFFF)。但是,将它与 Brushes.Transparent 进行比较会返回 false,即使该值实际上是 #00FFFFFF

var brushes = GetListOfBrushes();
var brush = brushes.First(c => c != Brushes.Transparent);
Console.WriteLine(brush); // Prints "#00FFFFFF"

在这种情况下,唯一可靠的方法是检查它的字符串表示,如果它以 `#00"开头,这感觉很糟糕。

在下面的示例屏幕截图中,从 First() 调用返回的 Brush 与谓词匹配,尽管它不应该:

enter image description here

最佳答案

根据您的字符串表示,我推断您使用的是 System.Windows.Media.Brush 而不是 System.Drawing.Brush

System.Windows.Media.Brush 尚未实现自己的 Equals() 版本。所以你的比较

c != Brushes.Transparent

只比较引用相等性,但不比较相等的值。一种解决方案是比较不透明度:

var brush = brushes.First(c => c.Opacity != Brushes.Transparent.Opacity);

但也许您会想要比较更多属性,具体取决于您的需要或您想要如何识别该特殊画笔。

关于c# - 为什么这个带有 #00FFFFFF 值的 Brush 不等于 Brushes.Transparent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223479/

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