为什么 DateTime.Add 不返回对新 DateTime 对象的引用

本文关键字:DateTime 对象 引用 返回 Add 为什么 | 更新日期: 2023-09-27 18:36:26

我有一个对象,它有两个成员(_starttime和_stoptime)类型为日期时间。

当我在调试器中调用以下方法时,一切都按预期工作。 _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 是对象,属性只返回内部成员。

就像我之前说的,如果我在Visual Studio中,它可以按预期工作。我怀疑正在进行某种我不知道的优化。

为什么 DateTime.Add 不返回对新 DateTime 对象的引用

添加一些Trace.Assert语句来断言你认为正确的内容。 例如:

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

可能会一分钱掉下来,你会在你的代码中找到错误,没有其他人会从你发布的小片段中找到。