使用Microsoft.VisualBasic.DateAndTime.Now与System.DateTime.Now相比有什么区别吗?
我似乎记得读过一些说MS.VB命名空间仅用于遗留用途的东西,并且比使用原生的.net类慢得多。
答案 0 :(得分:9)
在某些情况下,使用VB命名空间可能会更慢(因为增加了功能和/或灵活性,而不是因为MS希望VB更慢)。
但是在DateAndTime.Now的情况下,情况并非如此。这只是对DateTime.Now的调用的包装。
我怀疑这个调用是由JIT编译器内联的,所以它不会让你的代码变慢(当编译为Release时)。
证明:这是来自DateAndTime.Now的IL:
.method public specialname static valuetype [mscorlib]System.DateTime get_Now() cil managed
{
.maxstack 1
.locals init (
[0] valuetype [mscorlib]System.DateTime time)
L_0000: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now()
L_0005: ret
}
这与:
完全相同Return DateTime.Now
答案 1 :(得分:2)
我不知道它是否更慢(并且怀疑它是否足够重要);但是我已经在VB和C#之间进行了足够的移植,并且在系统等效物可用时返回以避免VisualBasic命名空间。这还需要担心一件事。
答案 2 :(得分:2)
你必须注意这一点。 Now属性不是问题,它返回DateTime.Now。但是在其他方面存在细微差别,例如Year()方法。它使用当前日历的GetYear()方法,该方法不必与DateTime.Now.Year属性相同。根据你的计划运行的地方,这可能会例如给出自耶路撒冷圣殿被毁坏以来的年数。仅当您真的想要模拟旧版VB6程序的行为时才使用这些VB6 compat函数。
答案 3 :(得分:1)
VB6函数返回了自某个参考点以来的小数天数; .net函数返回DateTime结构。
答案 4 :(得分:0)
VB名称空间让VB 6开发人员有宾至如归的感觉。
这与遗产类似,但并不完全。