为什么DateTime.Add没有返回对新DateTime对象的引用?

时间:2013-10-21 14:32:21

标签: c#

我有一个对象有两个成员(_starttime和_stoptime),类型为DateTime。

当我在调试器中调用以下方法时,一切都按预期工作。 _stoptime将成为对未来基于TimeSpan值等待时间设置的新DateTime对象的引用。

但是,如果我将对象部署到服务器并调用它,那么它将返回对原始DateTime对象(_starttime)的引用。

我很困惑。有什么想法吗?

    public void Restart()
    {
        _starttime = DateTime.Now;
        _stoptime = _starttime.Add(_waittime);
    }

加了:

更改值后,我通过以下方式测试:

            Debug.Assert(  Object.ReferenceEquals(RunInterval.StartTime, RunInterval.StopTime), "StartTime and StopTime are a reference same object");

RunInterval是对象,Properties只返回内部成员..

就像我说的那样,如果我在Visual Studio中,它会按预期工作。我怀疑正在进行一些我不知道的优化。

1 个答案:

答案 0 :(得分:2)

添加一些Trace.Assert语句来断言您认为真实的内容。 E.g:

Trace.Assert(_waittime > (TimeSpan)0);
Trace.Assert(_stoptime == _starttime + _waittime);

可能一分钱就会下降,你会发现代码中的错误,其他任何人都无法从你发布的小片段中找到。