我有一个函数(在一个循环中)将绘制实时温度(系列["实验"]),我也有一个理论数据(系列["理论" ])想要绘制在同一个数字上。但是,理论图必须与实验具有相同的开始时间,因此我必须定义 initial_time ,它应该是(date.Hour * 3600 + date)的值.Minute * 60 + date.Second)在第一个循环中,并在程序中修复。如何提取这个initial_time?如果是在C程序中,我将使用静态int initial_time = date.Hour * 3600 + date.Minute * 60 + date.Second,但这是一个C#,我无法在函数中定义静态...
private void BackgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
try
{
var date = DateTime.Now;
x = date.Hour * 3600 + date.Minute * 60 + date.Second;
this.chart1.Series["Experiment"].Points.AddXY(x, myFloat);
int[] theory_x = new int[] { 1, 3, 5, 7, 9 };
int[] theory_y = new int[] { 100, 200, 250, 300, 400};
int theory_x_new=theory_x+***initial_time***;
this.chart1.Series["Theory"].Points.AddXY(theory_x_new, theory_y);
}
catch (Exception)
{
}
}
答案 0 :(得分:2)
在函数外部创建一个bool
,可能是一些类级变量。
private boolean loaded = false;
private int initial_time = 0;
然后在循环函数中:
if(!loaded){
loaded = true;
var date = DateTime.Now;
initial_time = date.Hour * 3600 + date.Minute * 60 + date.Second;
}
<强>更新强>:
正如ColinWilliams在他的评论中所说initial_time
也需要是一个班级变量。
答案 1 :(得分:2)
好吧,因为你只想在第一次运行循环时设置它,我想这会做到:
//Somewhere out of your fuction:
private int initial_time; // = 0 (default)
if(initial_time == 0) //No value is set (0 is default for int)
{
initial_time = DateTime.Now.Hour * 3600 + DateTime.Now.Minute * 60 + DateTime.Now.Second;
}
所以在第二次迭代中它没有再次设置。 这意味着只要您的类在范围内,该值就是“常量”。