6

我有以下AddTicks方法代码。日期时间对象的 Ticks 属性在 AddTick 方法之前和之后返回相同的值。为什么会这样?

一毫秒内有 10,000 个滴答声。

Ticks:此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来经过的 100 纳秒间隔数,它表示 DateTime.MinValue。

AddTicks :将指定数量的刻度添加到此实例的值。

注意:我正在使用.Net 4.0框架

代码

    static void Main()
    {


        DateTime dt2 = new DateTime(2010, 5, 7, 10, 11, 12, 222);

        long x = dt2.Ticks;
        dt2.AddTicks(9999);

        long y = dt2.Ticks;

        bool isSame = false;
        if (x == y)
        {
            isSame = true;  
        }


        Console.WriteLine(isSame);
        System.Console.ReadKey();
    }
4

2 回答 2

21

AddTicks(和其他Add*方法)不会更改 DateTime,但会返回一个新对象。

所以你应该使用

dt2 = dt2.AddTicks(...)

DateTime是一个值类型并且是不可变的。

于 2013-01-10T08:47:25.730 回答
3

DateTime 值(如字符串)是不可变的。

对 DateTime 实例的任何操作都不会更改该实例的值,而是会返回您必须捕获的新 DateTime 值。

dt2 = dt2.AddTicks(9999);
于 2013-01-10T08:50:11.047 回答