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

如何在C#函数(在循环中)中存储变量的第一个值,c#,C#,我有一个函数(在循环中)将绘制实时温度(系列[“实验”]),我还有一个理论数据(系列[“理论”])希望绘制在同一个图形上。但是,理论图必须与实验具有相同的开始时间,因此我必须定义初始时间,它应该是(date.Hour*3600+date.Minute*60+date.Second)在第一个循环中,并在程序中固定。如何提取此初始时间?如果它在C程序中,我将使用静态int initial_time=date.Hour*3600+date.Minute*60+date.Second,但这是一个C#,并

我有一个函数(在循环中)将绘制实时温度(系列[“实验”]),我还有一个理论数据(系列[“理论”])希望绘制在同一个图形上。但是,理论图必须与实验具有相同的开始时间,因此我必须定义初始时间,它应该是(date.Hour*3600+date.Minute*60+date.Second)在第一个循环中,并在程序中固定。如何提取此初始时间?如果它在C程序中,我将使用静态int initial_time=date.Hour*3600+date.Minute*60+date.Second,但这是一个C#,并且我无法在函数中定义static

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

        }
}

在函数外创建一个
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在他的评论中所说的那样,初始时间也需要是一个类级变量。

既然您只想在第一次运行循环时设置它,我想这可以做到:

    private boolean loaded = false;
    private int initial_time = 0;
//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;
}
因此,在第二次迭代中,它不会再次设置。
这意味着该值是“常量”只要你的类在范围内。

我可能误解了OP的问题,但我认为他们需要保存计算的日期。同样的原则适用,但也需要使用日期的类级别变量。@colinwillams可能
initial\u time
是类级别的变量啊,我认为最好在你的回答中澄清这一点,因为问题中不清楚。否则完全同意你的回答。@Colinwillams同意!更新答案。我认为动机的答案很优雅,我不知道我怎么会错过这种方式!感谢所有帮助我的人,我开始发现C越来越有趣。你说的
[…]是什么意思并在程序中进行修复
?这是
WPF
还是
WindowsForms
?非常感谢!非常有效!这一个简单而漂亮!@adamwu注意:由于当程序运行时间超过
12小时/24小时时,您只能使用
小时、分钟、秒
,因此无法判断它是何时启动的。。。