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

10-04 11:08