在.NET Charting命名空间中,Series
类的AddXY
成员有DataPointCollection
次重载:
public int AddXY(object xValue, params object[] yValue)
这意味着如果某些SeriesChartType
每个X值需要多个Y值,我可以这样说:
my_series.Points.AddXY(x, y_1, y_2, y_3);
其中x
和y_1 y_2 y_3
是双倍的,自params
关键字
但是现在我有一个函数接收某种类型的系列和double[]
y值,如下所示:
private void add_a_pair(double x, double[] ys, SeriesChartType type)
{
my_series.ChartType = type;
my_series.addXY(x, ys);
}
编译器将抛出异常说:
系列数据点不支持类型的值 System.Double [] ,只能使用这些类型的值:Double, Decimal,Single,int,long,uint,ulong,String,DateTime,short, USHORT。
这有点令人困惑,因为其中一个重载明确定义它可以采用object[]
(我认为double[]
将与之兼容)。我发现THIS QUESTION遇到了同样的事情,但动机和答案并不是我想要的。
我觉得它可能有用的唯一解决方法是这样的:
if(type.Equals(SeriesChartType.ErrorBar))
{
my_series.AddXY(x, ys[0], ys[1], ys[2]);
}
if(....)
{
my_series.AddXY(x, ys[0], ys[1]);
}
....
看起来非常愚蠢。关于C#I的基本缺失是什么?
【解决方案】请参阅TaW的评论。