c#将参数传入另一个方法
本文关键字:另一个 方法 参数 | 更新日期: 2023-09-27 18:11:38
我试图定义一个用于绘制图形的助手类,我被告知使用Zip方法将数组X和Y的每个元素传递到另一个方法,但它没有很好地工作,任何专家都可以指出我做错了什么?我用谷歌找不到类似的情况。
还是我太有想象力了,这种方法根本行不通?我已经看到了使用Zip方法计算一对x, y点的例子,但不作为参数传递。情况:我的程序有两个函数和一个委托,第一个函数称为PlotXYAppend用于调用委托PlotXYDelegate,然后传入方法Points。addXY来做绘图,我之所以用图表。这里的调用是出于线程安全的考虑。
但是我遇到的问题是委派或plotxyappend一次只取一对点,所以我想出了一个方法,这是创建另一个名为PlotXYPass的函数,将一对XY点传递到plotxyappend以使其工作,但我认为有一些问题我无法解决,智能感知告诉我他们不喜欢我放在这个函数中的参数。
非常感谢你的帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms.DataVisualization.Charting;
namespace LastTrial
{
public class PlotHelper
{
double[] X = { 1, 2, 3, 4, 5, 6 };
double[] Y = { 1, 2, 3, 4, 5, 6 };
Chart chart;// declare chart as chart type
Series dataSeries;// declare dataSeries as Series type
private delegate int PlotXYDelegate(double x, double y);
private void PlotXYAppend(Chart chart, Series dataSeries, double x, double y)
{
chart.Invoke(new PlotXYDelegate(dataSeries.Points.AddXY), new Object[] { x, y });
}// this line invokes a Delegate which pass in the addXY method defined in Points, so that it can plot a new point on a chart.
private void PlotXYPass(double[] X, double[] Y)
{
X.Zip(Y, (x, y) => this.PlotXYAppend(chart,dataSeries,x,y));
}
// trying to pass in x,y points by extracting pairs of points from list []X and []Y into the function above which only takes a pair of x,y points
}
}
private object PlotXYAppend (Chart chart, Series dataSeries, double x, double y)
{
return chart.Invoke(new PlotXYDelegate(dataSeries.Points.AddXY), new Object[] { x, y });
}
public IEnumerable<object> PlotXYPass (double[] X, double[] Y)
{
return X.Zip<double, double, object>(Y, (x, y) => this.PlotXYAppend(this.chart, this.dataSeries, x, y));
}
然后在调用时删除惰性,如:
var ph = new PlotHelper();
ph.chart = this.chart;
ph.dataSeries = this.chart.Series[0];
var result = ph.PlotXYPass(ph.X, ph.Y).ToList();