我想是无用的问题,但是每次访问属性DateAndTime.Now
计算当前的系统日期和时间,我想,是吗?
因此,这样做会更好:
Dim rightNow As Date = Now
For i As Integer = 0 To 1000
If expiration < rightNow Then
' ...
End If
Next
结束
For i As Integer = 0 To 1000
If expiration < Now() Then
' ...
End If
Next
我是对的吗?
答案 0 :(得分:4)
你是对的,你只想根据需要进行Now()调用。
答案 1 :(得分:4)
这取决于你想要达到的目标。
如果您需要所有迭代都使用最准确的时间,那么选项1就是您的选择。
如果您需要所有迭代都使用相同的时间,那么选项2就是您的选择。
我不会过分担心调用DateTime.Now的性能,除非您已经确认它对您的应用程序产生了影响。确保您的程序正确更为重要。
答案 2 :(得分:3)
DateTime.Now进行了大量处理:
public static DateTime Now
{
get
{
DateTime utcNow = DateTime.UtcNow;
bool isAmbiguousDst = false;
long ticks = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utcNow,
out isAmbiguousDst).Ticks;
long num = utcNow.Ticks + ticks;
if (num > 3155378975999999999L)
{
return new DateTime(3155378975999999999L, DateTimeKind.Local);
}
if (num < 0L)
{
return new DateTime(0L, DateTimeKind.Local);
}
return new DateTime(num, DateTimeKind.Local, isAmbiguousDst);
}
}
它将utcNow转换为您当地的时间。因为这种要求很贵。根据您的要求,第一个样本将为您提供更好的性能。
答案 3 :(得分:2)
这很容易测试。以下是我计算机上的平均时间:
00:00:00.0000260
00:00:00.0015428
这是一个有意义的区别吗?只有您知道它是否适合您的应用。正如其他人所指出的那样,您需要Now()
的准确度如何?
答案 4 :(得分:0)
你说得对,但是如果你完成任务,就不会马上做出来......如果你得到我的漂移。
我有兴趣看到一些时间,看看两种方法之间有多大差异。