如何在C#函数中存储变量的第一个值(在循环中)

时间:2016-10-12 05:56:06

标签: c#

我有一个函数(在一个循环中)将绘制实时温度(系列["实验"]),我也有一个理论数据(系列["理论" ])想要绘制在同一个数字上。但是,理论图必须与实验具有相同的开始时间,因此我必须定义 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)
        {

        }
}

2 个答案:

答案 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;
}

所以在第二次迭代中它没有再次设置。 这意味着只要您的类在范围内,该值就是“常量”。