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

本文关键字:第一个 循环 存储 函数 变量 | 更新日期: 2023-09-27 18:12:36

我有一个函数(在一个循环中)将绘制实时温度(系列["实验"]),而且我还有一个理论数据(系列["理论"])想要绘制在同一图上。但是,理论图必须与实验有相同的开始时间,所以我必须定义initial_time,它应该是(date)的值。小时* 3600 +日期。分钟* 60 +日期。秒)在第一个循环中,并固定在程序中。如何提取这个initial_time?如果是在C程序中,我将使用静态int initial_time=date。小时* 3600 +日期。分钟* 60 +日期。第二,但这是c#,我不能在函数中定义静态in ....

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)
        {
        }
}

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

既然你只想在第一次运行循环时设置它,我想这样就可以了:

//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;
}

所以在第二次迭代中它不再被设置。这意味着只要你的类在作用域中,这个值就是"常量"。

在函数外创建一个bool,可能是某个类级别变量。

    private boolean loaded = false;
    private int initial_time = 0;

Then in you loop函数:

    if(!loaded){
       loaded = true;
       var date = DateTime.Now;
       initial_time = date.Hour * 3600 + date.Minute * 60 + date.Second;
    }

:正如ColinWilliams在他的评论中所说,initial_time也需要是一个类水平变量。