我已经为CustomDashPattern使用了一个float数组属性,并像下面的代码一样使用它,
float[] customDashPattern = { 5, 3, 5, 3 };
public float[] CustomDashPattern
{
get
{
return customDashPattern;
}
set
{
customDashPattern = value;
}
}
public bool ShouldSerializeCustomDashPattern()
{
return customDashPattern != new float[] { 5, 3, 5, 3 };
}
但即使默认值未更改,属性值仍会在设计器中序列化。
即使pattern是默认值,serial serialize的逻辑也会返回true。
任何人都可以告诉我,我做错了什么?
答案 0 :(得分:3)
对于数组,!=
运算符会比较对象引用。要比较数组内容,请使用Enumerable.SequenceEqual()
:
public bool ShouldSerializeCustomDashPattern()
{
return !Enumerable.SequenceEqual(customDashPattern, new float[] { 5, 3, 5, 3 })
}