使用AddTicks不会导致DateTime的差异

LCJ*_*LCJ 5 c#

我有以下代码AddTicks方法.datetime对象的Ticks属性在AddTick方法之前和之后返回相同的值.为什么表现如此?

一毫秒内有10,000个刻度.

刻度:此属性的值表示自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();
    }
Run Code Online (Sandbox Code Playgroud)

fae*_*ter 20

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

所以你应该使用

dt2 = dt2.AddTicks(...)
Run Code Online (Sandbox Code Playgroud)

DateTime 是一个值类型,是不可变的.

  • DateTime,因为其他本机结构是不可变的. (7认同)
  • @SteveB然而,有一些(不幸的)可变结构的例子.例如,通过引用`System.Drawing.dll`和`using System.Drawing;`,以下实际修改了现有的`Point`值:`Point p = new Point(60,20); p.Offset(3,4);` (2认同)