为什么无法分配 .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);