我有一个网格用户控件。它使用 IFormatProvider 格式化单元格中的文本以进行显示。每个 Cell 允许设置自己的 IFormatProvider。根据单元格的 DisplayText 请求,程序依次调用 Cell 的 IFormatProvider,然后是 Column 的 IFormatProvider。我创建了一个数组来保存所有不相同的 IFormatProvider,这样我只需要保存 ID 即可检索格式。
如何比较 IFormatProvider?如果它们不同,则保存到数组中。
private IFormatProvider[] FormatProviders;
internal short CreateNewFormatProviders(IFormatProvider newFormatProvider)
{
if (newFormatProvider == null) // (IFormatProvider.Equals(newFormatProvider,null))
{
return -1;
}
int len = this.FormatProviders.Length;
for (int i = 0; i < len; i++)
{
if (IFormatProvider.Equals(this.FormatProviders[i],newFormatProvider))
{
return (short)i;
}
}
Array.Resize<IFormatProvider>(ref this.FormatProviders, len + 1);
this.FormatProviders[len] = newFormatProvider;
return (short)len;
}
在上面的代码中,我使用了 IFormatProvider.Equals。它运行正常还是有更好的方法?