运算符'=='不能应用于'Thickness'和'string'类型的操作数

时间:2016-10-13 10:43:02

标签: c# wpf types error-handling

我正在使用计时器制作动画,当它的边距达到值时,我想要停止。 “Bir”是我的形状,“ZamanSayacıA”是我的计时器。

if (Bir.Margin == "510, 410, 0, 0")
        {
            ZamanSayacıA.Stop();
        }

并给出以下错误。

  

运算符'=='不能应用于'Thickness'和'string'

类型的操作数

2 个答案:

答案 0 :(得分:3)

您无法将Thicknessstring==运算符进行比较,因为它们都是不同的类型。但是Thickness有一个派生方便的构造函数:

Thickness th = new Thickness(510, 410, 0, 0);
if(Bir.Margin.Equals(th))
{

}

由于== operator已超载,您还可以使用:

if(Bir.Margin == th)
{

}

如果您只有一个字符串"510, 410, 0, 0",那么您需要获得Thickness

double[] thLengths = Array.ConvertAll("510, 410, 0, 0".Split(','), double.Parse);
Thickness th = new Thickness(thLengths[0], thLengths[1], thLengths[2], thLengths[3]);

答案 1 :(得分:1)

Bir.Margin不是string,而是Thickness。您无法将string实例直接与Thickness的实例进行比较。

您应该创建一个Thickness来比较Bir.Margin到:

if (Bir.Margin == new Margin(510,410,0,0))