.Net DateTime プロパティを割り当てることができないのはなぜですか? 次のようなことができると便利です。
DateTime saveNow = DateTime.Now;
saveNow.Second = 0; //Error, it does not compile
これらはアクセサ プロパティであるため、読み取り専用です。
DateTime now = DateTime.Now;
DateTime saveNow
= new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);
これを試して:
DateTime saveNow = DateTime.Now;
saveNow.AddSeconds(-savenow.Second);
AddSeconds
値を変更せず、新しい値を持つ新しいインスタンスを返します。このバージョンは動作します:
saveNow = saveNow.AddSeconds(-savenow.Second);
@SLaksと@Gabeが言ったことを要約します:
DateTime は構造体 (クラスではない) であり、変更可能な構造体は悪い習慣です。詳細はこちらをご覧ください なぜ変更可能な構造体が悪なのですか?
このため、DateTime は変更できないように設計されています。
DateTime の「seconds」フィールドを 0 に設定するには、次のコードを使用できます。
DateTime now = DateTime.Now;
DateTime saveNow
= new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);