我有点晚来到这个聚会,但最近我遇到了两个问题:
日期时间分辨率
Ticks属性以10百万分之一秒(100纳秒块)为单位测量时间,但分辨率不是100纳秒,而是约15毫秒。
以下是代码:
long now = DateTime.Now.Ticks;
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1);
Console.WriteLine(DateTime.Now.Ticks - now);
}
将会给你一个输出(例如):
0
0
0
0
0
0
0
156254
156254
156254
同样地,如果你查看DateTime.Now.Millisecond,你会得到以15.625毫秒为单位的近似值:15、31、46等。
这种特定行为因系统而异,但在这个日期/时间 API 中还有其他分辨率相关的陷阱。
Path.Combine
一个很好的组合文件路径的方法,但它并不总是按照你所期望的方式运行。
如果第二个参数以\
字符开头,它将不能给你一个完整的路径:
这段代码:
string prefix1 = "C:\\MyFolder\\MySubFolder";
string prefix2 = "C:\\MyFolder\\MySubFolder\\";
string suffix1 = "log\\";
string suffix2 = "\\log\\";
Console.WriteLine(Path.Combine(prefix1, suffix1));
Console.WriteLine(Path.Combine(prefix1, suffix2));
Console.WriteLine(Path.Combine(prefix2, suffix1));
Console.WriteLine(Path.Combine(prefix2, suffix2));
给您这个输出:
C:\MyFolder\MySubFolder\log\
\log\
C:\MyFolder\MySubFolder\log\
\log\