dtbはDateTime
不変であることについて正しいです。このように考えてください。aは値型であり、またはDateTime
と同じカテゴリに分類されます。これらの構造のインスタンスは変更できません。それらは評価およびコピーのみが可能です。int
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
ちなみに、これを明確にするのに役立つかもしれないことの1つは、上記の行、d = d.Add(t)
がと同じであることを理解することd = d + t
です。また、独自の行に書き込むd + t
のと同じように、独自の行に書き込むこともありませんi + 2
。