如何避免序列化float数组属性

时间:2017-05-03 13:27:44

标签: c# windows winforms json.net

我已经为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。

任何人都可以告诉我,我做错了什么?

1 个答案:

答案 0 :(得分:3)

对于数组,!=运算符会比较对象引用。要比较数组内容,请使用Enumerable.SequenceEqual()

public bool ShouldSerializeCustomDashPattern()
{
    return !Enumerable.SequenceEqual(customDashPattern, new float[] { 5, 3, 5, 3 })
}