我已经为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是默认值,for应该序列化的逻辑也会返回true。
有人可以让我知道,我做错了什么吗?
最佳答案
对于数组,!=
运算符比较对象引用。要比较数组内容,请使用Enumerable.SequenceEqual()
:
public bool ShouldSerializeCustomDashPattern()
{
return !Enumerable.SequenceEqual(customDashPattern, new float[] { 5, 3, 5, 3 })
}