dtb 关于DateTime
不可变是正确的。可以这样想:aDateTime
是一种值类型,它与int
or属于同一类别double
。这些结构的实例不能被修改;它们只能被评估和复制。
考虑这段代码:
int i = 4;
i + 2; // does not compile, but what if it did?
// would i become 6? clearly not --
// i + 2 expresses a NEW value, which can
// be copied somewhere
i = i + 2; // there we go -- that's better
这类似于:
DateTime d = DateTime.Now;
TimeSpan t = TimeSpan.FromDays(1.0);
d.Add(t); // compiles (because AddDays is a function),
// but is really the same as i + 2 above
d = d.Add(t); // that's better
顺便说一句,可能有助于使这一点更清楚的一件事是意识到上面的行 ,d = d.Add(t)
与 相同d = d + t
。而且你不会写d + t
在自己的行上,就像你不会写i + 2
在自己的行上一样。