是否有理由选择其中之一?新DateTime()与默认(DateTime)
DateTime myDate = new DateTime();
或
DateTime myDate = default(DateTime);
他们两人都是相等1/1/0001 12:00:00 AM
。
是否有理由选择其中之一?新DateTime()与默认(DateTime)
DateTime myDate = new DateTime();
或
DateTime myDate = default(DateTime);
他们两人都是相等1/1/0001 12:00:00 AM
。
答案是否定的。请记住,在这两种情况下,mdDate.Kind = DateTimeKind.Unspecified
。
因此它可能是更好的做到以下几点:
DateTime myDate = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);
的myDate.Kind
属性是只读的,所以构造函数被调用后,不能更改。
如何回答OP的问题? –
请查看我答案的前4个单词。 –
我会反驳这个。默认的'DateTime'作为一个未设置值的值非常有用,只需比较'default(DateTime)'。什么用途是非默认的'01/01/0001'值? – Rawling
如果您想在方法中使用DateTime参数的默认值,则只能使用默认值(DateTime)。
下面的行不会编译:
private void MyMethod(DateTime syncedTime = DateTime.MinValue)
此行将编译:
private void MyMethod(DateTime syncedTime = default(DateTime))
这就是我正在寻找的答案。谢谢! – GigaKatowice
当然DateTime.MinValue不能编译?可选参数必须是编译时常量,而MinValue不是。虽然Date(DateTime)和new DateTime()都是有效的(这实际上很有趣,因为DateTime值x = default(DateTime)无效,因为DateTime值不能被声明为编译时常量) –
等于'DateTime.MinValue',所以你也可以只做到'日期时间指明MyDate =日期时间.MinValue':/ – Lloyd
@Lloyd大部分时间......但不是默认参数DateTime.MinValue不是一个编译时间常量 - 但是默认的(DateTime)/ new DateTime()是。 – Ricibob
只是为了澄清@ Ricibob的优秀评论,因为它很重要:如果您使用可选参数创建方法,则只能使用'default(DateTime)'或'New DateTime()'。这些都是*编译时间常量*,对于可选参数值是必需的。如果不需要编译时间常量,那么'default(DateTime)','new DateTime()'和'DateTime.MinValue'是可以互换的。 – leanne